摘要:首頁確定一個核心概念僅可清除當前進程的定時器代碼如下啟動服務器本意圖實現啟動后循環輸出,連接后清除定時器的效果,然而事件是在進程的主線程中被調用,而事件是在進程中被回調,這里不屬于同一進程,故連接后會提示
首頁確定一個核心概念
clearTimer僅可清除當前進程的定時器
server代碼如下:
serv = new swoole_server("0.0.0.0", 9501); $this->serv->set([ "worker_num" => 8, "daemonize" => false, ]); $this->serv->on("Start", [$this, "onStart"]); $this->serv->on("Connect", [$this, "onConnect"]); $this->serv->on("Receive", [$this, "onReceive"]); $this->serv->on("Close", [$this, "onClose"]); $this->serv->start(); } public function onStart($serv) { $this->echoStr("Server Starting"); $this->timer = $serv->tick(1000, function(){ $this->echoStr("timer waiting"); }); // $this->timer = swoole_timer_tick(1000, function() { // }); } public function onConnect($serv, $fd, $from_id) { // swoole_timer_clear($this->timer); $serv->clearTimer($this->timer); $this->echoStr("Connecting! Clear Timer!"); // $serv->send($fd, "Hello {$fd}!"); } public function onReceive(swoole_server $serv, $fd, $from_id, $data) { $this->echoStr("Get Message From Client {$fd}:{$data}"); $serv->send($fd, $data); } public function onClose($serv, $fd, $from_id) { $this->echoStr("Client {$fd} close connection"); } public function echoStr($msg) { echo "[" . date("Y-m-d H:i:s") . "]: " . $msg . PHP_EOL; } } // 啟動服務器 Start the server $server = new Server();
本意圖實現server啟動后循環輸出“timer waiting”,client連接后清除定時器的效果,然而onStart事件是在Master進程的主線程中被調用,而onConnect事件是在work進程中被回調,這里不屬于同一進程,故client連接后會提示:
PHP Warning: SwooleServer::clearTimer(): no timer...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/29469.html
摘要:從入門到放棄二一異步毫秒定時器設置一個間隔時鐘定時器,與定時器不同的是定時器會持續觸發,直到調用清除。是一次性函數,執行完成后就會銷毀最大不超過使用定時器來刪除定時器。 swoole——從入門到放棄(二) 一、異步毫秒定時器 swoole_timer_tick:設置一個間隔時鐘定時器,與after定時器不同的是tick定時器會持續觸發,直到調用swoole_timer_clear清...
摘要:從入門到放棄二一異步毫秒定時器設置一個間隔時鐘定時器,與定時器不同的是定時器會持續觸發,直到調用清除。是一次性函數,執行完成后就會銷毀最大不超過使用定時器來刪除定時器。 swoole——從入門到放棄(二) 一、異步毫秒定時器 swoole_timer_tick:設置一個間隔時鐘定時器,與after定時器不同的是tick定時器會持續觸發,直到調用swoole_timer_clear清...
摘要:清空主進程殘留的定時器與信號。設定為執行回調函數如果在回調函數中調用了異步系統,啟動函數進行事件循環。因此為了區分兩者,規定并不允許兩者同時存在。 前言 swoole-1.7.2 增加了一個進程管理模塊,用來替代 PHP 的 pcntl 擴展。 PHP自帶的pcntl,存在很多不足,如 pcntl 沒有提供進程間通信的功能 pcntl 不支持重定向標準輸入和輸出 pcntl 只...
摘要:利用將傳入的轉為文件描述符新建對象,并對其設置文件描述符讀寫回調函數檢測是否存在,并對其進行初始化。如果傳入在中不存在返回,用于修改事件監聽的回調函數和掩碼。異常事件回調函數當發現套接字發生錯誤后,就會自動刪除該套接字的監聽。 前言 對于異步的任務來說,Server 端的 master 進程與 worker 進程會自動將異步的事件添加到 reactor 的事件循環中去,task_wor...
閱讀 1277·2021-11-15 18:14
閱讀 3156·2021-08-25 09:38
閱讀 2673·2019-08-30 10:55
閱讀 2698·2019-08-29 16:39
閱讀 1312·2019-08-29 15:07
閱讀 2452·2019-08-29 14:14
閱讀 820·2019-08-29 12:36
閱讀 919·2019-08-29 11:21