协程:并发 shell_exec
最后更新于:2022-04-02 06:16:29
# 协程:并发 shell\_exec
[TOC]
在`PHP`程序中经常需要用`shell_exec`执行一些命令,而普通的`shell_exec`是阻塞的,如果命令执行时间过长,那可能会导致进程完全卡住。 在`Swoole4`协程环境下可以用`Co::exec`并发地执行很多命令。
> 本文基于`Swoole-4.2.9`和`PHP-7.2.9`版本
## 协程示例
~~~
使用`nohup`或`&`转为后台执行,无法得到命令执行的结果和输出,本文不对此进行深度探讨
## 阻塞结果
~~~
htf@htf-ThinkPad-T470p:~/workspace/debug$ time php s.php
real 0m50.119s
user 0m0.066s
sys 0m0.058s
htf@htf-ThinkPad-T470p:~/workspace/debug$
~~~
可以看到阻塞版本花费了`50秒`才完成。`Swoole4`提供的协程,是并发编程的利器。在工作中很多地方都可以使用协程,实现并发程序,大大提升程序性能。
';