本教程使用的定时任务基于EasyTak,EasyTask官方文档:https://gitee.com/392223903/EasyTask
(1).安装tp6
composer create-project topthink/think tp
(2).安装定时任务composer包
composer require easy-task/easy-task
(3).创建命令行处理类文件
php think make:command Task task
会生成文件:tp\app\command\Task.php
将Task.php文件内容修改如下:
<?php
declare (strict_types=1);
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 Task extends Command
{
protected function configure()
{
//设置名称为task
$this->setName('task')
//增加一个命令参数
->addArgument('action', Argument::OPTIONAL, "action", '')
->addArgument('force', Argument::OPTIONAL, "force", '');
}
protected function execute(Input $input, Output $output)
{
//获取输入参数
$action = trim($input->getArgument('action'));
$force = trim($input->getArgument('force'));
// 配置任务,每隔20秒访问2次网站
$task = new \\EasyTask\\Task();
$task->setRunTimePath('./runtime/');
$task->addFunc(function () {
$url = 'https://www.gaojiufeng.cn/?id=327';
file\_get\_contents($url);
}, 'request', 20, 2);;
// 根据命令执行
if ($action == 'start')
{
$task->start();
}
elseif ($action == 'status')
{
$task->status();
}
elseif ($action == 'stop')
{
$force = ($force == 'force'); //是否强制停止
$task->stop($force);
}
else
{
exit('Command is not exist');
}
}
}
(4).配置tp\config\console.php文件
<?php
// +----------------------------------------------------------------------
// | 控制台配置
// +----------------------------------------------------------------------
return \[
// 指令定义
'commands' => \[
'task' => 'app\\command\\Task',
\],
\];
(5).执行命令(windows请使用cmd):
php think task start 启动命令
php think task status 查询命令
php think task stop 关闭命令
php think task stop force 强制关闭命令
{message type="info"}后台执行失败可修改为前台启动查看问题或者查看日志文件,有问题可以在qq群反馈bug,记得用星星支持我们哦{/message}
受教了……