swoole事件如何用

swoole事件如何用

swooleServer是事件驅(qū)動模式,所有的業(yè)務(wù)邏輯代碼必須寫在事件回調(diào)函數(shù)中。當(dāng)特定的網(wǎng)絡(luò)事件發(fā)生后,底層會主動回調(diào)指定的PHP函數(shù)。共支持13種事件。? ? ? ? ? ? ? ? ? ? ? ?(推薦學(xué)習(xí): swoole視頻教程

事件執(zhí)行順序

所有事件回調(diào)均在$server->start后發(fā)生

服務(wù)器關(guān)閉程序終止時最后一次事件是onShutdown

服務(wù)器啟動成功后,onStart/onManagerStart/onWorkerStart會在不同的進程內(nèi)并發(fā)執(zhí)行

onReceive/onConnect/onClose在Worker進程中觸發(fā)

Worker/Task進程啟動/結(jié)束時會分別調(diào)用一次onWorkerStart/onWorkerStop

onTask事件僅在task進程中發(fā)生

onFinish事件僅在worker進程中發(fā)生

onStart/onManagerStart/onWorkerStart 3個事件的執(zhí)行順序是不確定的

協(xié)程模式

Swoole2/4版本支持了協(xié)程,使用協(xié)程后事件回調(diào)函數(shù)將會并發(fā)地執(zhí)行。協(xié)程是一種用戶態(tài)線程實現(xiàn),沒有額外的調(diào)度消耗,僅占用內(nèi)存。

使用協(xié)程模式,可以理解為“每次事件回調(diào)函數(shù)都會創(chuàng)建一個新的線程去執(zhí)行,事件回調(diào)函數(shù)執(zhí)行完成后,線程退出”。

如果希望關(guān)閉協(xié)程,可設(shè)置:

$server->set(["enable_coroutine"?=>?false,?]);

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊9 分享