1.第一步,安裝最新的taskPHP
composer require taskphp/taskphp dev-master
2.第二步, 配置TP5項(xiàng)目的 application/command.php 文件
return [
'app\crontab\Taskphp',
];
第三步, 創(chuàng)建Taskphp命令文件 application/index/command/Taskphp.php
<?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 [
//任務(wù)列表
'task_list' => [
//key為任務(wù)名嗜愈,多任務(wù)下名稱必須唯一
'demo' => [
'callback' => ['app\\crontab\\Demo', 'run'],//任務(wù)調(diào)用:類名和方法
//指定任務(wù)進(jìn)程最大內(nèi)存 系統(tǒng)默認(rèn)為512M
'worker_memory' => '10M',
//開啟任務(wù)進(jìn)程的多線程模式
'worker_pthreads' => false,
//任務(wù)的進(jìn)程數(shù) 系統(tǒng)默認(rèn)1
'worker_count' => 1,
//crontad格式 :秒 分 時(shí) 天 月 年 周
'crontab' => '/5 * * * * * *',
],
'test' => [
'callback' => ['app\\crontab\\Demo', 'test'],//任務(wù)調(diào)用:類名和方法
//指定任務(wù)進(jìn)程最大內(nèi)存 系統(tǒng)默認(rèn)為512M
'worker_memory' => '10M',
//開啟任務(wù)進(jìn)程的多線程模式
'worker_pthreads' => false,
//任務(wù)的進(jìn)程數(shù) 系統(tǒng)默認(rèn)1
'worker_count' => 1,
//crontad格式 :秒 分 時(shí) 天 月 年 周
'crontab' => '/5 * * * * * *',
],
],
];
}
protected function configure()
{
$this->addArgument('param', Argument::OPTIONAL);
// 設(shè)置命令名稱
$this->setName($_SERVER['argv'][1])->setDescription('this is a taskphp!');
}
protected function execute(Input $input, Output $output)
{
//系統(tǒng)配置
$config = $this->get_config();
//加載配置信息
\taskphp\Config::load($config);
//定義啟動(dòng)文件入口標(biāo)記
define("START_PATH", dirname(APP_PATH));
//運(yùn)行框架
\taskphp\App::run();
}
}
第四步, 創(chuàng)建Demo任務(wù)文件 application/crontab/Demo.php
<?php
namespace app\crontab;
use taskphp\Utils;
class Demo
{
public static function run()
{
Utils::log('run開始時(shí)間:' . date('Y-m-d H:i:s'));
}
public static function test()
{
Utils::log('test開始時(shí)間:' . date('Y-m-d H:i:s'));
}
}
第五步旧蛾,大功告成開始使用
php think start demo
然后就出現(xiàn)
clipboard.png
查了下taskphp生成的日志問(wèn)題提示:出現(xiàn)缺少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
發(fā)現(xiàn)taskphp默認(rèn)找的是 Sqlite 驅(qū)動(dòng)類型 ,這里切換為Redis(注:記得開啟PHP redis擴(kuò)展)
//系統(tǒng)隊(duì)列配置
'queue'=>[
//驅(qū)動(dòng)類型 Shm|Redis|Sqlite|Mysql 生產(chǎn)環(huán)境推薦使用Shm或者Redis驅(qū)動(dòng) 由于Mysql和Sqlite有I/O 相對(duì)來(lái)說(shuō)Mysql和Sqlite性能比較差
'drive' => 'Redis',
],
再次啟動(dòng)
php think start demo
1clipboard.png