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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Timer定時器 --- ## 定時器原理 Timer定時器是Swoole擴展提供的一個毫秒級定時器,其作用是每隔指定的時間間隔之后執行一次指定的回調函數,以實現定時執行任務的功能。 新版本的Swoole中,定時器是基于epoll方法的timeout機制實現的,不再依賴于單獨的定時線程,準確度更高。同時,Swoole擴展使用最小堆存儲定時器,減少定時器的檢索次數,提高了運行效率。 ## 定時器使用 在Swoole中,定時器的函數原型如下: ```php // function onTimer(int $timer_id, mixed $params = null); // 回調函數的原型 int swoole_timer_tick(int $ms, mixed $callback, mixed $param = null); int swoole_server::tick(int $ms, mixed $callback, mixed $param = null); // function onTimer(); // 回調函數的原型(不接受任何參數) void swoole_timer_after(int $after_time_ms, mixed $callback_function); void swoole_server::after(int $after_time_ms, mixed $callback_function); ``` tick定時器是一個永久定時器,使用tick方法創建的定時器會一直運行,每隔指定的毫秒數之后執行一次callback函數。在創建定時器的時候,可以通過tick函數的第三個參數,傳遞一些自定義參數到callback回調函數中。另外,也可以使用PHP的閉包(use關鍵字)實現傳參。具體實例如下: ```php $str = "Say "; $timer_id = swoole_timer_tick( 1000 , function($timer_id , $params) use ($str) { echo $str . $params; // 輸出“Say Hello” } , "Hello" ); ``` tick函數會返回定時器的id。當我們不再需要某個定時器的時候,可以根據這個id,調用`swoole_timer_clear`函數刪除定時器。需要注意的是,創建的定時器是不能跨進程的,因此,在一個Worker進程中創建的定時器,也只能在這個Worker進程中刪除,這一點一定要注意(使用`$worker_id`變量來區分Worker進程); after定時器是一個臨時定時器。使用after方法創建的定時器僅在指定毫秒數之后執行一次callback函數,執行完成后定時器就會刪除。after定時器的回調函數不接受任何參數,可以通過閉包方式傳遞參數,也可以通過類成員變量的方式傳遞。具體實例如下: ```php class Test { private $str = "Say Hello"; public function onAfter() { echo $this->str; // 輸出”Say Hello“ } } $test = new Test(); swoole_timer_after(1000, array($test, "onAfter"); // 成員變量 swoole_timer_after(2000, function() use($test){ // 閉包 $test->onAfter(); // 輸出”Say Hello“ }); ```
                  <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>

                              哎呀哎呀视频在线观看