无阻塞的并发 Shell 命令执行
许多应用程序需要在后台执行计算密集型任务,特别是在处理用户交互时。在 PHP 中,shell_exec 函数通常用于此目的。但是,当任务需要很长时间才能完成时,可能会出现问题,因为它会阻塞 PHP 脚本的执行流程。有没有一种方法可以在不等待 shell 命令完成的情况下执行它?
带重定向的并发执行
是的,可以在不等待的情况下并发执行 shell 命令阻止 PHP 脚本。这可以通过将命令的输出和错误流重定向到 null 来实现。操作方法如下:
shell_exec('php measurePerformance.php 47 844 [email protected] > /dev/null 2> /dev/null &');
命令末尾的 & 符号告诉 shell 在后台执行该命令。的> /dev/null 和 2> /dev/null 重定向会丢弃标准输出和标准错误流,从而有效地静默命令的任何输出。
并发执行的好处
并发执行命令有几个好处:
注意: 将 stdout 和 stderr 流重定向到 /dev/null 意味着您将无法访问任何输出或来自命令的错误消息。如果您需要捕获这些,请使用替代方法,例如管道或进程监控。
以上是如何在 PHP 中并发执行 Shell 命令而不阻塞?的详细内容。更多信息请关注PHP中文网其他相关文章!