在 PHP 中使用 shell_exec 长时间运行的 Python 脚本没有返回结果

我使用 shell_exec 从命令行运行 Python 脚本,为了测试,Python 脚本只是等待一段时间然后返回 True:

def test(minutes):
   import time
   time.sleep(minutes*60)
      return True

据我测试,如果时间段是 30 分钟或 60 分钟,结果会成功返回给 PHP,但是如果我将其设置为 80 分钟,PHP 不会收到任何结果,甚至不会收到错误消息。

php.ini 中的 max_execution_time 是 30000 秒,足够长了。

环境:带有 IIS 的 Windows Server 2016 Standard


守着一只汪
浏览 220回答 3
3回答

波斯汪

根据这个答案,你睡的时间越长,遇到问题的可能性就越大,尽管 80 分钟看起来确实有那么长。如果这确实导致了您的问题,也许您应该考虑将睡眠时间分成几个部分(例如 1 分钟)作为解决方法:def test(minutes):   import time   for k in range(minutes):       time.sleep(60)   return True

Cats萌萌

尝试这些事情,在您的 PHP 脚本中,添加“timeout 100m”,这可能会增加 python 脚本执行超时$output = shell_exec("timeout 100m python3 longrun.py"); echo $output;在您的服务器配置文件(对于Ubuntu中的Apache2,它是“/etc/apache2/apache.conf”)将超时更改为6000,默认值为300。6000意味着6000秒,等于100分钟

慕后森

检查 php.ini 中的 max_input_time
打开App,查看更多内容
随时随地看视频慕课网APP