You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu环境下如何在PHP中异步后台运行Python脚本?

在Ubuntu下让PHP异步调用Python脚本的正确姿势

我之前也帮人排查过类似的问题,你遇到的核心问题是:虽然加了&和nohup,但PHP还是会阻塞等待Python脚本执行完毕,这是因为没有正确处理子进程的输出流。

你尝试过的代码(无法实现异步)

shell_exec("nohup python2.7 /var/www/html/pythonproject/python.py /var/www/html/file 100525 &");
exec("nohup /usr/bin/python2.7 /var/www/html/pythonproject/python.py /var/www/html/file 100525 &");

可行的异步实现代码

下面这段代码可以让PHP立即返回,Python脚本在后台独立运行:

exec("/usr/bin/python2.7 /var/www/html/pythonproject/python.py /var/www/html/file 100525 > /dev/null 2>/dev/null &")

原理说明

  • > /dev/null:把Python脚本的标准输出(stdout)重定向到空设备,避免PHP等待输出流关闭
  • 2>/dev/null:把标准错误(stderr)也重定向到空设备,防止错误输出导致的阻塞
  • &:让Python进程在后台运行

这样处理后,PHP就不会再等待脚本执行完成,直接继续执行后续代码了。

内容的提问来源于stack exchange,提问作者Sammu Sundar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:44:33