1.第一步,安装最新的taskPHP
composer require taskphp/taskphp dev-master
2.第二步, 配置TP5项目的 application/command.php 文件
return [
'app\crontab\Taskphp',
];
第三步, 创建Taskphp命令文件 application/index/command/Taskphp.php
namespace app\crontab;
use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\Output;
define('APP_PATH', __DIR__);
require_once APP_PATH . '/../../vendor/taskphp/taskphp/src/taskphp/base.php';
class Taskphp extends Command
{
protected function get_config()
{
return [
//任务列表
'task_list' => [
//key为任务名,多任务下名称必须唯一
'demo' => [
'callback' => ['app\\crontab\\Demo', 'run'],//任务调用:类名和方法
//指定任务进程最大内存 系统默认为512M
'worker_memory' => '10M',
//开启任务进程的多线程模式
'worker_pthreads' => false,
//任务的进程数 系统默认1
'worker_count' => 1,
//crontad格式 :秒 分 时 天 月 年 周
'crontab' => '/5 * * * * * *',
],
'test' => [
'callback' => ['app\\crontab\\Demo', 'test'],//任务调用:类名和方法
//指定任务进程最大内存 系统默认为512M
'worker_memory' => '10M',
//开启任务进程的多线程模式
'worker_pthreads' => false,
//任务的进程数 系统默认1
'worker_count' => 1,
//crontad格式 :秒 分 时 天 月 年 周
'crontab' => '/5 * * * * * *',
],
],
];
}
protected function configure()
{
$this->addArgument('param', Argument::OPTIONAL);
// 设置命令名称
$this->setName($_SERVER['argv'][1])->setDescription('this is a taskphp!');
}
protected function execute(Input $input, Output $output)
{
//系统配置
$config = $this->get_config();
//加载配置信息
\taskphp\Config::load($config);
//定义启动文件入口标记
define("START_PATH", dirname(APP_PATH));
//运行框架
\taskphp\App::run();
}
}
第四步, 创建Demo任务文件 application/crontab/Demo.php
namespace app\crontab;
use taskphp\Utils;
class Demo
{
public static function run()
{
Utils::log('run开始时间:' . date('Y-m-d H:i:s'));
}
public static function test()
{
Utils::log('test开始时间:' . date('Y-m-d H:i:s'));
}
}
第五步,大功告成开始使用
php think start demo
然后就出现
clipboard.png
查了下taskphp生成的日志问题提示:出现缺少queue.db 文件
[2019-08-27 10:54:28.90645100][DEBUG]:create E:\appback\runtime\crontab\queue.db error
[2019-08-27 10:54:35.16849900][DEBUG]:create E:\appback\runtime\crontab\queue.db error
[2019-08-27 10:54:35.17215400][DEBUG]:taskPHP daemon pid:17360 Stop
[2019-08-27 10:54:35.24464400][DEBUG]:create E:\appback\runtime\crontab\queue.db error
发现taskphp默认找的是 Sqlite 驱动类型 ,这里切换为Redis(注:记得开启PHP redis扩展)
//系统队列配置
'queue'=>[
//驱动类型 Shm|Redis|Sqlite|Mysql 生产环境推荐使用Shm或者Redis驱动 由于Mysql和Sqlite有I/O 相对来说Mysql和Sqlite性能比较差
'drive' => 'Redis',
],
再次启动
php think start demo
1clipboard.png