我定義了一個(gè) crontab,規(guī)則是每分鐘執(zhí)行一次,具體代碼如下:
<?php
use Workerman\Worker;
use Workerman\Crontab\Crontab;
$worker = new Worker();
$worker->name = PROJECT . 'Crontab';
// 設(shè)置時(shí)區(qū),避免運(yùn)行結(jié)果與預(yù)期不一致
date_default_timezone_set('PRC');
$worker->onWorkerStart = function () {
global $db;
$db = MySQL::getInstance($GLOBALS['db_project_config']);
new Crontab('*/1 * * * *', function () use ($db) {
WsService::checkProjectUrlStatusTask($db);
});
};
實(shí)際執(zhí)行結(jié)果如下:
Press Ctrl+C to stop. Start success.
共有28條數(shù)據(jù),共1頁(yè),開(kāi)始處理時(shí)間:2024-10-24 20:40:00
處理結(jié)束時(shí)間:2024-10-24 20:40:30,耗時(shí) 30 秒
共有28條數(shù)據(jù),共1頁(yè),開(kāi)始處理時(shí)間:2024-10-24 20:41:30
處理結(jié)束時(shí)間:2024-10-24 20:41:53,耗時(shí) 23 秒
共有28條數(shù)據(jù),共1頁(yè),開(kāi)始處理時(shí)間:2024-10-24 20:42:23
共有28條數(shù)據(jù),共1頁(yè),開(kāi)始處理時(shí)間:2024-10-24 20:43:00
處理結(jié)束時(shí)間:2024-10-24 20:44:02,耗時(shí) 62 秒
共有28條數(shù)據(jù),共1頁(yè),開(kāi)始處理時(shí)間:2024-10-24 20:45:02
處理結(jié)束時(shí)間:2024-10-24 20:46:09,耗時(shí) 67 秒
^CWorkerman[start.php] stopping ...
他好像不是每分鐘執(zhí)行一次,而是向后延續(xù)一樣,感覺(jué)和 linux 的 crontab 好像不一樣,如果不一樣,麻煩作者大佬在文檔( http://www.wtbis.cn/doc/workerman/components/crontab.html )里說(shuō)明下,不然容易引起誤解,我還自己加了防止同時(shí)重復(fù)執(zhí)行的邏輯,測(cè)了半天發(fā)現(xiàn)根本不用加。謝謝大佬。
我用的 crontab 版本是 1.0.6