swoole定时器的特点是准确到毫秒,而crontab是分钟。
今天记录的是crontab,不是linux的哦~
不多说,直接上代码,简单粗暴~~~~
1,设置路由(看个人需求):
<?php
/**
* Author
* Github
*/
namespace App\HttpController;
use App\Calculate\DbTest\DbTest;
use EasySwoole\Http\AbstractInterface\AbstractRouter;
use FastRoute\RouteCollector;
use EasySwoole\Http\Request;
use EasySwoole\Http\Response;
class Router extends AbstractRouter
{
function initialize(RouteCollector $routeCollector)
{
$routeCollector->get('/DbTest/producer', function (Request $request, Response $response) {
$date = $request->getRequestParam('date');
(new DirectlyProducer())->execute($date);
});
}
}
2,定时任务:
<?php
/**
* Author:
* Github:
*/
namespace App\Crontab\Directly;
use App\Calculate\Directly\Producer;
use EasySwoole\EasySwoole\Crontab\AbstractCronTask;
use EasySwoole\EasySwoole\Logger;//日志用的
/**
* Class TaskTest
* @package App\Crontab
* @content
*/
class TaskProducer extends AbstractCronTask
{
public static function getRule(): string
{
return '0 1 * * *';
}
public static function getTaskName(): string
{
return '测试用的,每天运行一次';
}
static function run(\swoole_server $server, int $taskId, int $fromWorkerId, $flags = null)
{
// Logger::getInstance()->log(date('Y-m-d H:i:s', time()) . ' 打码结果' . (new Producer())->execute(), 'Notice');
(new Producer())->execute();
}
}
剩下的就是跑定时任务run里的方法了
顺便加一句:
守护进程:php easyswoole start d