新建一个定时器,修改部分代码
之后php start.php reload定时器
新修改的部分代码不生效
<?php
use \Workerman\Worker;
use \Workerman\Lib\Timer;
require_once './Workerman/Autoloader.php';
$task = new Worker();
// 开启多少个进程运行定时任务,注意多进程并发问题
$task->count = 1;
$task->name = "TimerWorker";
$task->reloadable = true;
$task->onWorkerStart = function ($task) {
Timer::add(1, function () {
logLib::out("timerfdsa");
});
};
// 运行worker
if(!defined('GLOBAL_START'))
{
Worker::runAll();
}
我无论怎么修改logLib::out("timerfdsa");都不生效,除非是执行php start.php restart
手册有说明,只有在onXX载入的文件才能reload(或者说Worker::runAll() 运行后载入的文件才能reload)。主进程写死的代码无法reload。
恩,那我现在需要怎么处理这部分逻辑。可以让我的定时器代码reload的时候可以生效。每次重启服务器端很伤人啊
完整的测试代码。文件名start_timer.php
上面这段代码,LogLib::out部分怎么修改,reload后都不生效
首先:定时器函数写到单独文件
通过自动加载机制加载这个单独文件。
如果不懂自动加载就在onWorkerStart中require进来。
太感谢了。可以了