摘要:首頁確定一個(gè)核心概念僅可清除當(dāng)前進(jìn)程的定時(shí)器代碼如下啟動(dòng)服務(wù)器本意圖實(shí)現(xiàn)啟動(dòng)后循環(huán)輸出,連接后清除定時(shí)器的效果,然而事件是在進(jìn)程的主線程中被調(diào)用,而事件是在進(jìn)程中被回調(diào),這里不屬于同一進(jìn)程,故連接后會(huì)提示
首頁確定一個(gè)核心概念
clearTimer僅可清除當(dāng)前進(jìn)程的定時(shí)器
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; } } // 啟動(dòng)服務(wù)器 Start the server $server = new Server();
本意圖實(shí)現(xiàn)server啟動(dòng)后循環(huán)輸出“timer waiting”,client連接后清除定時(shí)器的效果,然而onStart事件是在Master進(jìn)程的主線程中被調(diào)用,而onConnect事件是在work進(jìn)程中被回調(diào),這里不屬于同一進(jìn)程,故client連接后會(huì)提示:
PHP Warning: SwooleServer::clearTimer(): no timer...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/29469.html
摘要:從入門到放棄二一異步毫秒定時(shí)器設(shè)置一個(gè)間隔時(shí)鐘定時(shí)器,與定時(shí)器不同的是定時(shí)器會(huì)持續(xù)觸發(fā),直到調(diào)用清除。是一次性函數(shù),執(zhí)行完成后就會(huì)銷毀最大不超過使用定時(shí)器來刪除定時(shí)器。 swoole——從入門到放棄(二) 一、異步毫秒定時(shí)器 swoole_timer_tick:設(shè)置一個(gè)間隔時(shí)鐘定時(shí)器,與after定時(shí)器不同的是tick定時(shí)器會(huì)持續(xù)觸發(fā),直到調(diào)用swoole_timer_clear清...
摘要:從入門到放棄二一異步毫秒定時(shí)器設(shè)置一個(gè)間隔時(shí)鐘定時(shí)器,與定時(shí)器不同的是定時(shí)器會(huì)持續(xù)觸發(fā),直到調(diào)用清除。是一次性函數(shù),執(zhí)行完成后就會(huì)銷毀最大不超過使用定時(shí)器來刪除定時(shí)器。 swoole——從入門到放棄(二) 一、異步毫秒定時(shí)器 swoole_timer_tick:設(shè)置一個(gè)間隔時(shí)鐘定時(shí)器,與after定時(shí)器不同的是tick定時(shí)器會(huì)持續(xù)觸發(fā),直到調(diào)用swoole_timer_clear清...
摘要:清空主進(jìn)程殘留的定時(shí)器與信號(hào)。設(shè)定為執(zhí)行回調(diào)函數(shù)如果在回調(diào)函數(shù)中調(diào)用了異步系統(tǒng),啟動(dòng)函數(shù)進(jìn)行事件循環(huán)。因此為了區(qū)分兩者,規(guī)定并不允許兩者同時(shí)存在。 前言 swoole-1.7.2 增加了一個(gè)進(jìn)程管理模塊,用來替代 PHP 的 pcntl 擴(kuò)展。 PHP自帶的pcntl,存在很多不足,如 pcntl 沒有提供進(jìn)程間通信的功能 pcntl 不支持重定向標(biāo)準(zhǔn)輸入和輸出 pcntl 只...
摘要:利用將傳入的轉(zhuǎn)為文件描述符新建對(duì)象,并對(duì)其設(shè)置文件描述符讀寫回調(diào)函數(shù)檢測是否存在,并對(duì)其進(jìn)行初始化。如果傳入在中不存在返回,用于修改事件監(jiān)聽的回調(diào)函數(shù)和掩碼。異常事件回調(diào)函數(shù)當(dāng)發(fā)現(xiàn)套接字發(fā)生錯(cuò)誤后,就會(huì)自動(dòng)刪除該套接字的監(jiān)聽。 前言 對(duì)于異步的任務(wù)來說,Server 端的 master 進(jìn)程與 worker 進(jìn)程會(huì)自動(dòng)將異步的事件添加到 reactor 的事件循環(huán)中去,task_wor...
閱讀 1271·2021-11-15 18:14
閱讀 3128·2021-08-25 09:38
閱讀 2663·2019-08-30 10:55
閱讀 2673·2019-08-29 16:39
閱讀 1305·2019-08-29 15:07
閱讀 2446·2019-08-29 14:14
閱讀 810·2019-08-29 12:36
閱讀 909·2019-08-29 11:21