简介
swoole_process 是swoole提供的进程管理模块,用来替代PHP的pcntl扩展。
首先,确保安装的swoole版本大于1.7.2:
实例说明
本例里待消费的是三个shell命令,会分别创建一个子进程来消费。消费的时候故意sleep了1秒,以便直观看到效果。
process_t1.php
命令行里运行:
大家会觉得很奇怪,为什么开了三个子进程,还是用了3秒,应该是1秒左右才对呀。
原因是父进程读取子进程返回的数据的时候,是同步阻塞读取:
导致的后果就是父进程依次等待每个进程处理完并返回了内容,才走下一次循环。
解决方案1:
使用将管道加入到事件循环中,变为异步模式:
执行结果:
大家会发现,use time数据并不是最后打印出来的。已经是异步的了。 实际执行时间1s左右。
解决方案2:
先不获取子进程返回值,循环结束后统一返回:
执行结果:
参考
1、Process
https://wiki.swoole.com/wiki/page/p-process.html
2、swoole_process->read
https://wiki.swoole.com/wiki/page/217.html
领取专属 10元无门槛券
私享最新 技术干货