龙空技术网

PHP协程:并发 shell_exec

PHP编程爱好者 610

前言:

如今咱们对“shellphp参数”大体比较注重,同学们都想要学习一些“shellphp参数”的相关文章。那么小编也在网络上汇集了一些关于“shellphp参数””的相关知识,希望各位老铁们能喜欢,各位老铁们快快来学习一下吧!

在PHP程序中经常需要用shell_exec执行一些命令,而普通的shell_exec是阻塞的,如果命令执行时间过长,那可能会导致进程完全卡住。 在Swoole4协程环境下可以用Co::exec并发地执行很多命令。

本文基于Swoole-4.2.9和PHP-7.2.9版本

协程示例

<?php$c = 10;while($c--) {    go(function () {        //这里使用 sleep 5 来模拟一个很长的命令        co::exec("sleep 5");    });}
返回值

Co::exec执行完成后会恢复挂起的协程,并返回命令的输出和退出的状态码。

var_dump(co::exec("sleep 5"));
协程结果
htf@htf-ThinkPad-T470p:~/workspace/debug$ time php t.phpreal    0m5.089suser    0m0.067ssys 0m0.038shtf@htf-ThinkPad-T470p:~/workspace/debug$

只用了 5秒,程序就跑完了。

下面换成 PHP 的 shell_exec 来试试。

阻塞代码

<?php$c = 10;while($c--) {    //这里使用 sleep 5 来模拟一个很长的命令    shell_exec("sleep 5");}

使用nohup或&转为后台执行,无法得到命令执行的结果和输出,本文不对此进行深度探讨

阻塞结果

htf@htf-ThinkPad-T470p:~/workspace/debug$ time php s.php real    0m50.119suser    0m0.066ssys 0m0.058shtf@htf-ThinkPad-T470p:~/workspace/debug$

可以看到阻塞版本花费了50秒才完成。Swoole4提供的协程,是并发编程的利器。在工作中很多地方都可以使用协程,实现并发程序,大大提升程序性能。

在“疫情”期间已经淘汰了一批末端的业务coder,现在是自己努力成为资深程序员的好时机,才能在面对高薪职位邀请时,做到胸有成竹。为了大家能够顺利进阶PHP中高级程序员、架构师,我为大家准备了一份中高级的教程福利!助你金九银十拿高薪!

作为web开发的佼佼者PHP并不逊色其他语言,加上swoole后更加是如虎添翼!进军通信 、物联网行业开发百度地图、百度订单中心等!年后更是霸占程序员招聘语言第二名,寒冬裁员期过后正是各大企业扩大招人的时期,现在市场初级程序员泛滥,进阶中高级程序员绝对是各大企业急需的人才,这套教程适合那些1-6年的PHP开发者进阶中高级提升自己,在春招中找到高薪职位!

领取方式:点赞关注小编后私信【资料】获取资料领取方式!

部分资料展示:

领取方式:点赞关注小编后私信【资料】获取资料领取方式!

标签: #shellphp参数