Task 进程是swoole当中独立于worker进程的一个工作进程,用于处理一些耗时较长的逻辑。这些逻辑在处理的过程中,并不会影响到task进程处理来自客户端的请求,因此大大提高了系统并发的能力。
两个进程之间的关系如图:
Task进程和worker进程间通过Unix Sock管道进行通信(也可配置通过消息队列进行通信),task的消息传递只能传递字符串。
Task常见问题:
1、task传递数据大小
数据小于8K,直接通过管道传递;数据大于8K,写入临时文件传递
2、task传递对象
可以通过序列化传递一个对象的拷贝
task进程中对对象的改变不会反映到worker进程中
数据库连接,网络连接对象不可传递
3、task的onFinish回调
task的onFinish回调会发回回调task方法的worker进程(就是只会返回给投递者的进程)