使用场景:
- 执行耗时操作: 给多人发送邮件, 广播消息等等需要长时间等待的操作
在WebSocket服务中使用
我们需要使用到的函数:
-
task($data)
函数投递一个异步任务到
task_worker
池中。此函数是非阻塞的,执行完毕会立即返回。Worker进程可以继续处理新的请求。使用Task功能,必须先设置task_worker_num
,并且必须设置Server的onTask
和onFinish
事件回调返回值 : 成功返回
task_id
, 失败返回false
-
onTask($server,$task_id,$src_worker_id,$data)
task_id
和worker_id
组合起来才是唯一的,不同的worker
进程可能有同样的task_id
src_worker_id
来自于哪个worker进程
data
就是任务的内容,从task
函数传递过来的数据在
onTask
内的操作完成之后,需要return
数据给worker进程, 表示这个任务完成.return
的数据会被onFinish
的$data
接收 -
onFinish($server, $task_id,$data)
task_id
任务id
data
就是onTask
return过来的数据
具体代码:
$server->on('message',function(