Master进程内的回调函数
onStart Server启动在主进程的主线程回调此函数
onShutdown此事件在Server正常结束时发生
Manager进程内的回调函数
onManagerStart 当管理进程启动时调用它
onManagerStop 当管理进程结束时调用它
onWorkerError当worker/task_worker进程发生异常后会在Manager进程内回调此函数
Worker进程内的回调函数
onWorkerStart 此事件在Worker进程/Task进程启动时发生
onWorkerStop此事件在worker进程终止时发生。
onConnect有新的连接进入时,在worker进程中回调
onClose TCP客户端连接关闭后,在worker进程中回调此函数
onReceive接收到数据时回调此函数,发生在worker进程中
onPacket接收到UDP数据包时回调此函数,发生在worker进程中
onFinish当worker进程投递的任务在task_worker中完成时,task进程会通过finish()方法将任务处理的结果发送给worker进程。
onWorkerExit 仅在开启reload_async特性后有效。异步重启特性
onPipeMessage 当工作进程收到由 sendMessage 发送的管道消息时会触发事件
Task进程内的回调函数
onTask在task_worker进程内被调用。worker进程可以使用swoole_server_task函数向task_worker进程投递新的任务
onWorkerStart此事件在Worker进程/Task进程启动时发生
onPipeMessage 当工作进程收到由 sendMessage 发送的管道消息时会触发事件
简单说明:
1、服务器关闭程序终止时最后一次事件是onShutdown。
2、服务器启动成功后,onStart/onManagerStart/onWorkerStart会在不同的进程内并发执
行,并不是顺序的。
3、所有事件回调均在$server->start后发生,start之后写的代码是无效代码。
4、onStart/onManagerStart/onWorkerStart 3个事件的执行顺序是不确定的
Swoole的Reactor、Worker、TaskWorker之间可以紧密的结合起来,提供更高级的使用方式。一个更通俗的比喻,假设Server就是一个工厂,那Reactor就是销售,接受客户订单。而Worker就是工人,当销售接到订单后,Worker去工作生产出客户要的东西。而TaskWorker可以理解为行政人员,可以帮助Worker干些杂事,让Worker专心工作。