使用swoole的evenloop和php的inotify外掛程式可以很方便的監控資料夾下的檔案更新,後面也不用寫死迴圈和sleep
如果使用原生的php是需要寫while死迴圈和sleep。這樣效率不是很高
$handlelist = array();
//init
foreach ($this->_config["log_path"] as $content)
//建立乙個inotify控制代碼
$handlelist[$folder]["fd"] = inotify_init();
echo "listen the folder:" . $folder . php_eol;
//監聽檔案,僅監聽修改操作,如果想要監聽所有事件可以使用in_all_events
$handlelist[$folder]["desc"] = inotify_add_watch($handlelist[$folder]["fd"], $folder, in_modify);
//加入到swoole的事件迴圈中
swoole_event_add($handlelist[$folder]["fd"], function ($fd) use ($folder) }
});後續記得後面不要呼叫sleep也無需while死迴圈
今天踩坑我在後面加了while(true)死活不工作……後來問了峰哥……才知道丟人了……
這個效率很高…dora-rpc的日誌收集就這麼定了,我會做更多的測試後更新github
最後宣告:這段**的原始版本來自韓天峰的分享:
swoole使用協程
協程 協程可以理解為純使用者態的執行緒,其通過協作而不是搶占來進行切換。相對於程序或者執行緒,協程所有的操作都可以在使用者態完成,建立和切換的消耗更低。swoole可以為每乙個請求建立對應的協程,根據io的狀態來合理的排程協程,這會帶來了以下優勢 開發者可以無感知的用同步的 編寫方式達到非同步io的...
使用swoole非同步傳送郵件
傳送郵件的操作一般是比較耗時的,所以我們一般採用非同步或者佇列來執行。php使用redis的publish subscribe也是一種不錯的選擇,這在以前的一篇博文中寫過。php語言本身是不支援非同步操作的,不過我們可以通過swoole擴充套件實現非同步功能,這個非同步功能基於tcp協議,相應速度還...
Swoole中的非同步使用
改寫ws server.php this ws set worker num 2,task worker num 2,this ws on open this,onopen this ws on message this,onmessage this ws on task this,ontask t...