ThinkPHP使用定时任务守护执行

浏览:2978 发布日期:2020/04/05 分类:ThinkPHP5专区
(1).安装tp5.0或者5.1

composer create-project topthink/think=5.0.* tp5 --prefer-dist
(2).安装定时任务composer包EasyTask

composer require easy-task/easy-task
(3).创建命令行处理类文件application/common/command/Task.php

<?php
namespace app\common\command;

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

class Task extends Command
{
protected function configure()
{
//设置名称为task
$this->setName('task')
//增加一个命令参数
->addArgument('action', Argument::OPTIONAL, "action");
}

protected function execute(Input $input, Output $output)
{
//获取输入参数
$action = trim($input->getArgument('action'));

// 初始化EasyTask
$task = new \EasyTask\Task();

// 设置项目名称
$task->setPrefix('Think');

// 设置后台运行
$task->setDaemon(true);

// 设置日志保存目录
$task->setRunTimePath('./runtime/');

// 添加闭包任务,开2个进程5s执行1次访问网址
$task->addFunc(function () {
@file_get_contents('http://xingxinghan.cn/?id=6');
}, 'Curl_1', 5, 2);

// 添加执行tp默认控制器的方法,开1个进程10s执行1次访问网址
$task->addClass('\app\index\controller\Index', 'index', 'Curl_2', 10, 1);

// 根据命令执行
if ($action == 'start')
{
$task->start();
}
if ($action == 'status')
{
$task->status();
}
if ($action == 'stop')
{
$task->stop();
}
}
}
(4).将上面创建的Task.php在配置文件application/command.php中配置一下

return [
'app\common\command\Task',
];
(5).修改入口文件think文件(windows才需要),在第一行增加以下代码

// 重置工作目录(only_win_system)
chdir(dirname(__FILE__));
(6).执行命令(windows请使用cmd):

php think task start 启动命令
php think task status 查询命令
php think task stop 关闭命令
(7).整合的项目文件分享下载400kb

链接:https://pan.baidu.com/s/1LbU2fy_g2ivBqGrT2XL0aQ
提取码:20sd
提示:后台执行失败可修改为前台启动查看问题或者查看日志文件,有问题可以在qq群反馈bug
最佳答案
评论( 相关
后面还有条评论,点击查看>>