Task/Finish特性的用途

task模块用来做一些异步的慢速任务,比如webim中发广播,发送邮件等。

  • task进程必须是同步阻塞的
  • task进程支持定时器

node.js 假如有10万个连接,要发广播时,那会循环10万次,这时候程序不能做任何事情,不能接受新的连接,也不能收包发包。

而swoole不同,丢给task进程之后,worker进程可以继续处理新的数据请求。任务完成后会异步地通知worker进程告诉它此任务已经完成。

当然task模块的作用还不仅如此,实现PHP的数据库连接池,异步队列等,还需要进一步挖掘。


  • Link

    worker进程就阻塞了,task功能十分危险,慎用

  • DjvshD

    感觉好强大啊

  • 咸鱼

    开多几个 TASK 进程

  • 卖掉内裤去上网

    多开几个task-worker就好了

  • KID

    可以实现java的callable吗

  • selbstkennen梁晨

    如果用swoole做一个server框架的话,task还是挺实用的,能默默定时做一些事情(数据上报,定时刷新缓存),但是需要通过workerid来hack实现(如指定workerid=1的时候起这个task),因为这些事情很多情况下只需要执行一次。