<?php
use Workerman\Worker;
require __DIR__ . '/../vendor/autoload.php';
use Workerman\Crontab\Crontab;
$worker = new Worker();
$worker->onWorkerStart = function () {
// Execute the function in the first second of every minute.
new Crontab('1 *', function(){
echo date('Y-m-d H:i:s')."\n";
});
};
Worker::runAll();
这里 要是新加一个crontab 是不是要重启 这个worker 那每次新加一个计划任务都要重启 多麻烦啊
onWorkerStart 不是只执行一次吗 每次启动的时候 。 那我新加一个配置项都要重启 多麻烦啊 线上可能不能重启啊
https://workerman.net/plugin/42
你看下这里有没有什么启发。
手册里只是一个例子,没有说只能那样用啊,程序猿嘛,脑袋要灵活些
比如:onWorkerStart定时从数据库读规则和回调,然后动态添加。
比如:onWorkerStart定时读取crontab配置,然后动态添加。
比如:onMessage里接收请求,然后从磁盘读取crontab配置,添加crontab
比如:onMessage里接收请求,直接添加crontab,像下面这样
例如每秒打印一次时间戳,url就是
http://127.0.0.1:8080/?cron=*/1%20*%20*%20*%20*%20*&cb=time
cb是要定时触发的函数名字,这里是time函数。
如果实在不会就用 @liziyu 发的别人写好的方案
https://workerman.net/plugin/42
动态设置看看