<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 定時器 注意: 定時器傳入的時間參數單位為毫秒 按秒執行一定不要忘記 乘以 1000,若開啟了reload\_async配置時,請將定時器移動到自定義進程中,否則會導致worker進程無法reload ### 循環執行 設置一個間隔時鐘定時器,每隔一定的時間定時觸發,直到進行`clear`操作才會停止,對應 Swoole 原生的定時器函數為`swoole_timer_tick` ### 函數原型 ~~~php /** * 循環調用 * @param int $microSeconds 循環執行的間隔毫秒數 傳入整數型 * @param \Closure $func 定時器需要執行的操作 傳入一個閉包 * @param string $name 定時器名稱,用于取消該定時器 * @return int 返回整數型的定時器編號 可以用該編號停止定時器 */ public function loop($microSeconds, \Closure $func, $args = null) ~~~ ### 示例代碼 ~~~php // 每隔 10 秒執行一次 \EasySwoole\Component\Timer::getInstance()->loop(10 * 1000, function () { echo "this timer runs at intervals of 10 seconds\n"; }); ~~~ ## 延時執行 設置一個延時定時器,延時指定的時間后觸發對應的操作,只會執行一次操作,對應 Swoole 原生的定時器函數為`swoole_timer_after` ### 函數原型 ~~~php /** * 延時調用 * @param int $microSeconds 需要延遲執行的時間 * @param \Closure $func 定時器需要執行的操作 傳入一個閉包 * @return int 返回整數型的定時器編號 */ public function after($microSeconds, \Closure $func) ~~~ ### 示例代碼 ~~~php // 10 秒后執行一次 \EasySwoole\Component\Timer::getInstance()->after(10 * 1000, function () { echo "ten seconds later\n"; }); ~~~ ## 清除定時器 注意: 該操作不能用于清除其他進程的定時器,只作用于當前進程 定時器創建成功時,會返回一個整數型編號,調用本函數傳入該編號,即可提前停止定時器,對應 Swoole 原生的定時器函數為`swoole_timer_clear` ### 函數原型 ~~~php /** * 清除定時器 * @param int $timerId|$timeName 定時器編號或名稱 * @author : evalor <master@evalor.cn> */ public function clear($timerId) ~~~ ### 示例代碼 ~~~php // 創建一個2秒定時器 $timerId = \EasySwoole\Component\Timer::getInstance()->loop(2 * 1000, function () { echo "timeout\n"; },'time'); // 清除該定時器 //var_dump(\EasySwoole\Component\Timer::getInstance()->clear($timerId)); // bool(true) var_dump($timerId); // int(1) // 定時器得不到執行 不輸出:timeout ~~~ ## 應用實例 注意:定時器不能在服務啟動之前使用。在服務啟動以后,添加的定時器僅僅在當前進程中有效。在workerStart事件中添加定時器時,請注意判斷需要添加定時器的workerId,否在該定時器在每個進程中均會被執行 ~~~php // 為第一個 Worker 添加定時器 if ($workerId == 0) { \EasySwoole\Component\Timer::getInstance()->loop(10 * 1000, function () { echo "timer in the worker number 0\n"; }); } ~~~ ~~~php public static function mainServerCreate(EventRegister $register) { $register->add(EventRegister::onWorkerStart, function (\swoole_server $server, $workerId) { //如何避免定時器因為進程重啟而丟失 //例如在第一個進程 添加一個10秒的定時器 if ($workerId == 0) { \EasySwoole\Component\Timer::getInstance()->loop(10 * 1000, function () { // 從數據庫,或者是redis中,去獲取下個就近10秒內需要執行的任務 // 例如:2秒后一個任務,3秒后一個任務 代碼如下 \EasySwoole\Component\Timer::getInstance()->after(2 * 1000, function () { //為了防止因為任務阻塞,引起定時器不準確,把任務給異步進程處理 Logger::getInstance()->console("time 2", false); }); \EasySwoole\Component\Timer::getInstance()->after(3 * 1000, function () { //為了防止因為任務阻塞,引起定時器不準確,把任務給異步進程處理 Logger::getInstance()->console("time 3", false); }); }); } }); } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看