当前位置:首页 > PHP > ThinkPHP6 利用crontab+think make:command执行定时任务

宝塔服务器面板,一键全能部署及管理,送你3188元礼包,点我领取

ThinkPHP6 利用crontab+think make:command执行定时任务

原创 2020-06-05 PHP 6079
分享给朋友:

想在ThinkPHP中写一个定时任务,又不想这个任务是一个可以外网访问的地址怎么办?

ThinkPHP中提供了创建自定义指令的方法

参考官方示例:传送门

在命令台下

php think make:command Hello hello

会生成一个 app\command\Hello 命令行指令类

在目标文件中打开,我们稍作修改

<?php
declare (strict_types=1);
/**
 * for command test
 * @author wolfcode
 * @time 2020-06-04
 */

namespace app\command;

use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;

class Hello extends Command
{
    protected function configure()
    {
        // 指令配置
        $this->setName('hello')
            ->addArgument('name', Argument::OPTIONAL, "your name")
            ->addOption('city', null, Option::VALUE_REQUIRED, 'city name')
            ->setDescription('the hello command');
    }

    protected function execute(Input $input, Output $output)
    {
        $name = $input->getArgument('name');
        $name = $name ?: 'wolfcode';
        $city = '';
        if ($input->hasOption('city')) {
            $city = PHP_EOL . 'From ' . $input->getOption('city');
        }
        // 指令输出
        $output->writeln("hello {$name}" . '!' . $city);
    }
}

同时记得去注册下命令

在项目 config/console.php 中的'commands'加入

<?php
 return [
  'commands' => [
        'hello' => \app\command\Hello::class,
  ]
];

官方的写法是下面这样的(但是我按照这样写会报错)

<?php
 return [
  'commands' => [
        'hello' => 'app\command\Hello',
  ]
];

配置完后就可以在命令台中测试了

php think hello

输出

hello wolfcode!

定时任务需要的代码写完了,现在加入到crontab中

首先先查找下当前php命令所在的文件夹

type -p grep php

例如在 /usr/local/bin/php,则 crontab -e 中可以这样写:(文件会越来越大)

* * * * * /usr/local/bin/php /path/yourapp/think hello>>/path/yourlog/hello.log 2>&1

如果你想把日志分成每天来单独记录,可以这样写:

* * * * * /usr/local/bin/php /path/yourapp/think hello>>/path/yourlog/hello_`date -d 'today' +\%Y-\%m-\%d`.log 2>&1

然后检查下 crontab -l 是否填写正常,最后去 /path/yourlog下 看看你的定时任务日志是否运行正常!

 推荐自定义定时管理系统配置定时任务:https://www.wolfcode.net/info/228/

声明:版权所有,违者必究 | 如未注明,均为原创 | 本网站采用 BY-NC-SA 协议进行授权

转载:转载请注明原文链接,违者必究 - :https://www.wolfcode.net/info/187/

分享给朋友:

相关文章

EasyAdmin8 - PHP8.0常用框架快速后台管理系统

EasyAdmin8 开源快速开发后台,ThinKPHP 、 Laravel、webman 均覆盖

webman-blog 基于 webman 开源博客程序

webman-blog,一个基于 webman 的简单自适应个人博客程序,带后台。

webman自定义进程

1、新建文件 process/Rpc.php 编写rpc进程&lt;?php namespace&nbsp;process; use&nbsp;Workerman\Connection\TcpConnection; class&nbsp;Rpc { &nbsp;&nbsp;&nbsp;&n

在PHP7+下监控Memcached服务、性能、扇区等信息

PHPMemcachedAdmin:一款网页可视化的Memcached工具

Swoole的PHP协程开发框架 imi 集成ThinkPHP模板引擎 think-template

在 imi 框架根目录中执行composer&nbsp;require&nbsp;topthink/think-template安装好模板引擎后,找到路径\vendor\topthink\think-template\src\Template.php找到 fetch() 渲染模板文件的方法,将最后一

PHP7下MongoDB自增或自减一个字段的值

findAndModify属于原子操作模型数据,所谓原子操作就是要么这个文档保存到Mongodb,要么没有保存到Mongodb,不会出现查询到的文档没有保存完整的情况。

PHP的面向对象解析

早期编程由于受电脑硬件限制,程序都是追求效率,而忽略可理解性,扩充性,随着硬件技术的发展,编程越来越重视多人开发,程序员越来越重视程序的可靠性,可扩展性,可维护性,所以刺激了程序语言的发展

ThinkPHP6.0使用EasyTask常驻内存多进程任务管理

PHP常驻内存的多进程任务管理器Composer包。以进程管理为出发点,同时也支持为每个进程设置定时执行功能,您可以用它来完成需要重复运行的任务(如订单超时自动取消,短信邮件异步推送,队列/消费者/频道订阅者等等),甚至处理计划任务。

PHP8新特性盘点

PHP 8.0.0 已经正式发布了,这个对于PHPer无疑是一个令人振奋的消息。它包含了很多新功能与优化项, 包括命名参数、联合类型、注解、构造器属性提升、match表达式、nullsafe运算符、JIT,并改进了类型系统、错误处理、语法一致性。

PHP8新特性系列:构造器属性提升使用及注意事项

本篇主要说下PHP8构造器属性提升的用法,这个特性对于一些需要在构造器中设置或初始化一些类属性的时候非常有用(包括public、protected和private),比如在PHP7中你可以这样定义一个类的属性,然后在构造方法中传值。class&nbsp;Point&nbsp;{ &nbsp;&nb