SwooleServer是事件驅動模式,所有的業(yè)務邏輯代碼必須寫在事件回調函數中。當特定的網絡事件發(fā)生后,底層會主動回調指定的PHP函數。共支持13種事件。 (推薦學習: swoole視頻教程)
事件執(zhí)行順序
所有事件回調均在$server->start后發(fā)生
服務器關閉程序終止時最后一次事件是onShutdown
服務器啟動成功后,onStart/onManagerStart/onWorkerStart會在不同的進程內并發(fā)執(zhí)行
onReceive/onConnect/onClose在Worker進程中觸發(fā)
Worker/Task進程啟動/結束時會分別調用一次onWorkerStart/onWorkerStop
onTask事件僅在task進程中發(fā)生
onFinish事件僅在worker進程中發(fā)生
onStart/onManagerStart/onWorkerStart 3個事件的執(zhí)行順序是不確定的
協(xié)程模式
Swoole2/4版本支持了協(xié)程,使用協(xié)程后事件回調函數將會并發(fā)地執(zhí)行。協(xié)程是一種用戶態(tài)線程實現,沒有額外的調度消耗,僅占用內存。
使用協(xié)程模式,可以理解為“每次事件回調函數都會創(chuàng)建一個新的線程去執(zhí)行,事件回調函數執(zhí)行完成后,線程退出”。
如果希望關閉協(xié)程,可設置:
$server->set(["enable_coroutine" => false, ]);