thinkphp5.0 创建自定义命令行
- 在模块目录下面创建一个command目录文件夹,在此文件夹下创建一个php文件,这里我创建的是Crond.php
- 在Crond.php中编写代码
namespace app\index\command;
use app\index\model\Robot;
use think\console\Command;
use think\console\Input;
use think\console\Output;
class Crond extends Command
{
protected function configure()
{
$this->setName('Cron')->setDescription('计划任务');
}
protected function execute(Input $input, Output $output)
{
$this->doCron();
$output->writeln("已经执行计划任务");//此代码主要是输出到命令行
}
public function doCron()
{
//在这个里做自己的计划任务工作等等,建议自己创建一个model业务类专门管理你的业务逻辑,最好通过静态方法调用
Robot::getToken();
}
}
- 在application目录下的command.php文件中编写代码指定到我们刚才创建的Crond.php
return ['app\index\command\crond'];
- 打开命令终端 cd我们的项目根目录下
╰$ cd develop/www/thinkRedis
执行 php think Cron 会输出以下内容代表成功了
AppledeiMac-2:thinkphp apple$ php think Cron
添加ok已经执行计划任务
You have new mail in /var/mail/apple
AppledeiMac-2:thinkphp apple$
目前我们计划任务代码已经别写完毕了,剩下的工作我们需要通过系统的计划任务调用这些代码,这样就实现了计划任务调用
我们首先在项目根目录中创建一个.sh脚本文件,文件内容设置如下
#!/bin/sh
PATH=/usr/local/php/bin:/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
cd /Applications/MAMP/htdocs/thinkphp
php think Cron
- 到目前为止脚本文件已经编写完毕,剩下我们开始编写crontab命令来执行这个脚本文件,在这里我们测试1分钟执行一次
1. crontab -e
2.插入以下命令 */1 * * * * bash /Applications/MAMP/htdocs/thinkphp/crond.sh
3 :wq保存退出
截止目前我们的计划任务就设置完毕了
- 使用场景
- 积分一个月不用自动清空
- 自动化脚本(数据库源码备份)