thinkphp5 命令行执行计划任务

thinkphp5.0支持console应用,可以通过自定义命令行执行对应的程序。

第一步:在应用目录application下面的任意模块下创建command目录,command目录下创建Test.php,即:

<?php
namespace app\index\command;
use think\console\Command;
use think\console\Input;
use think\console\Output;
use think\Db;
class Test extends Command
{
    // 配置定时器的信息
    protected function configure()
    {
        $this->setName('test')
            ->setDescription('Command Test');
    }
    protected function execute(Input $input, Output $output)
    {
        // 输出到日志文件
        $output->writeln("TestCommand:");
        // 定时器需要执行的内容
        // .....
        $output->writeln("end....");
    }
}

第二步:在application下的command.php添加命令配置,执行命令的时候thinkphp会读取这个配置文件

return ['app\admin\command\Test'];

第三步:项目根目录下有一个think文件,没有此文件就新建一个,文件名无所谓。内容如下:

<?php
// 定义项目路径
define('APP_PATH', __DIR__ . '/application/');

// 加载框架引导文件
require './thinkphp/console.php';

然后就可以在根目录执行命令:php think

整个过程中有两点需要注意:

1,Test.php文件名的大小写

2,当时我的项目根目录中没有think文件,而应用目录是app。在新建think文件,里面的内容是复制进去的,没有仔细看,

     定义项目应用路径是:define('APP_PATH', __DIR__ . '/application/'); 所以命令始终出不来,改成app之后就好了。

第四步:添加shell脚本

在项目根目录下创建shell脚本,例如crond.sh

#!/bin/sh
PATH=/usr/local/php/bin:/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # 将php路径加入都临时变量中
cd /home/wwwroot/项目根目录/  # 进入项目的根目录下,保证可以运行php think的命令
php think test # 执行在Test.php设定的名称

其他命令直接往后加就行了。

第四步:使用crontab设置定时器

有两种方式设置定时器,第一种输入命令 crontab -e

0 0 * * * /home/wwwroot/项目根目录/crond.sh

第二种输入命令:vim /etc/crontab , 在文件后面加上

0 0 * * * root /home/wwwroot/项目根目录/crond.sh

定时设置可以自行百度,根据自己需求进行合理的设置。

重启crontab服务

service crontab restart

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值