国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

Crontab 阻塞的問題

forwebreg

問題描述

這里寫問題描述

<?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
....

是我理解不對嗎

364 4 0
4個回答

nitron

是的,你理解不對

注意
定時任務不會馬上執(zhí)行,所有定時任務進入下一分鐘才會開始計時執(zhí)行。
與workerman定時器一樣,任務全部在當前進程執(zhí)行,如果任務沒執(zhí)行完到了下個執(zhí)行周期則會等待當前任務執(zhí)行完,新任務執(zhí)行會延后。

  • 暫無評論
kof21411

阻塞不等于阻止

xiaoming

同一個時刻 只能執(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
        });
    }
}
  • 胡桃 2025-04-12

    使用異步 IO 函數(shù)代替 sleep(),比如 Swoole 的 co::sleep()。

??