首页 > 后端开发 > php教程 > 如何在不阻塞的情况下异步运行 PHP 命令?

如何在不阻塞的情况下异步运行 PHP 命令?

Patricia Arquette
发布: 2024-12-09 12:00:25
原创
502 人浏览过

How to Run PHP Commands Asynchronously Without Blocking?

如何执行 PHP 命令而不等待结果

在 PHP 中,exec 命令可以运行外部命令,但默认情况下,PHP 会等待以便命令在继续之前完成。然而,在某些情况下,我们希望启动一个命令并继续执行其他任务,而不等待结果。

解决方案:

PHP 文档提供了一个解决方案不阻塞地执行命令:

// Redirect stdout and stderr to /dev/null to suppress output
exec('run_baby_run > /dev/null 2>&1 &');
登录后复制

这个命令:

  1. 执行 run_baby_run 命令。
  2. 将其标准输出和标准错误重定向到 /dev/null,抑制命令的任何输出。
  3. 将命令,创建一个独立于 PHP 运行的单独进程

分离进程的替代解决方案:

将进程与 Apache 线程分离并确保即使 PHP 脚本终止它也能继续运行,使用此命令:

exec('bash -c "exec nohup setsid your_command > /dev/null 2>&1 &"');
登录后复制

这个命令:

  1. 启动 bash 会话。
  2. 运行 nohup 以防止调用脚本退出时进程终止。
  3. 设置新的会话 ID (setsid)将进程与当前进程分离。
  4. 将输出抑制为之前。

以上是如何在不阻塞的情况下异步运行 PHP 命令?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板