为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
守着一只汪 2023-07-08 15:38:39
我使用 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
查看完整描述

3 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

根据这个答案,你睡的时间越长,遇到问题的可能性就越大,尽管 80 分钟看起来确实有那么长。


如果这确实导致了您的问题,也许您应该考虑将睡眠时间分成几个部分(例如 1 分钟)作为解决方法:


def test(minutes):

   import time

   for k in range(minutes):

       time.sleep(60)

   return True


查看完整回答
反对 回复 2023-07-08
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

尝试这些事情,

  1. 在您的 PHP 脚本中,添加“timeout 100m”,这可能会增加 python 脚本执行超时

$output = shell_exec("timeout 100m python3 longrun.py"); echo $output;

//img1.sycdn.imooc.com//64a912e00001dafb05200194.jpg

  1. 在您的服务器配置文件(对于Ubuntu中的Apache2,它是“/etc/apache2/apache.conf”)将超时更改为6000,默认值为300。6000意味着6000秒,等于100分钟

//img1.sycdn.imooc.com//64a912ec0001673e06460429.jpg



查看完整回答
反对 回复 2023-07-08
?
慕后森

TA贡献1802条经验 获得超5个赞

检查 php.ini 中的 max_input_time



查看完整回答
反对 回复 2023-07-08
  • 3 回答
  • 0 关注
  • 211 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信