這里寫問題描述
<?php
namespace crontab;
use Workerman\Crontab\Crontab;
class Test
{
public function onWorkerStart()
{
//CrontabA
new Crontab('*/1 * * * * *', function () {
echo date('Y-m-d H:i:s')."-1\n";
});
//CrontabB
new Crontab('0 */1 * * * *', function () {
echo date('Y-m-d H:i:s')."-5\n";
sleep(5);
});
}
}
不知道是不是我理解得有問題 手冊上講是阻塞的
按這個理解 應該是 CrontabA執(zhí)行一次 CrontabB執(zhí)行一次 阻塞5秒 然后執(zhí)行CrontabA
輸出應該是
XXXX-XX-XX XX:XX:00-1
XXXX-XX-XX XX:XX:00-5
XXXX-XX-XX XX:XX:05-1
XXXX-XX-XX XX:XX:06-1
XXXX-XX-XX XX:XX:07-1
XXXX-XX-XX XX:XX:08-1
....
但是我執(zhí)行起來發(fā)現(xiàn)輸出是
XXXX-XX-XX XX:XX:00-1
XXXX-XX-XX XX:XX:00-5
XXXX-XX-XX XX:XX:05-1 //
XXXX-XX-XX XX:XX:05-1 // 這幾個是
XXXX-XX-XX XX:XX:05-1 // 一下輸出
XXXX-XX-XX XX:XX:05-1 // 5次的
XXXX-XX-XX XX:XX:05-1 //
XXXX-XX-XX XX:XX:06-1
XXXX-XX-XX XX:XX:07-1
XXXX-XX-XX XX:XX:08-1
....
是我理解不對嗎
是的,你理解不對
注意
定時任務不會馬上執(zhí)行,所有定時任務進入下一分鐘才會開始計時執(zhí)行。
與workerman定時器一樣,任務全部在當前進程執(zhí)行,如果任務沒執(zhí)行完到了下個執(zhí)行周期則會等待當前任務執(zhí)行完,新任務執(zhí)行會延后。
<?php
namespace crontab;
use Workerman\Crontab\Crontab;
class Test
{
public function onWorkerStart()
{
//CrontabA
new Crontab('*/1 * * * * *', function () { // 每秒鐘執(zhí)行一次
echo date('Y-m-d H:i:s')."-1\n";
});
//CrontabB
new Crontab('0 */1 * * * *', function () { // 每分鐘第 0 秒 執(zhí)行一次
echo date('Y-m-d H:i:s')."-5\n";
sleep(5); // 此處會阻塞進程 5 秒鐘,相當于執(zhí)行 CrontabB 時,整個進程都在等著 CrontabB 執(zhí)行完畢,CrontabA 會一直延后,累積 5 次后,CrontabB 執(zhí)行完畢的瞬間執(zhí)行 5 次被延后的 CrontabA
});
}
}