【问题标题】:Executing several Python scripts at same time causes PHP/Apache to hang同时执行多个 Python 脚本会导致 PHP/Apache 挂起
【发布时间】:2011-05-11 15:35:30
【问题描述】:

我正在尝试执行一些 python 脚本来处理我网站上的一些图像。外部程序/工具是用 python 编写的,称为PHATCH。我在 Windows 下并使用 WAMP 作为我的网络服务器。

只执行一个脚本似乎效果很好,但我需要同时执行 4 个脚本(生成 4 个不同的图像),我的浏览器只会加载并且 Apache/PHP 冻结。

由于多个 system() 调用相继调用,PHP 执行似乎冻结并挂起。这是我如何使用它的示例:

system("C:\\python\\python.exe C:\\phatch\\phatch.py script1.phatch");
system("C:\\python\\python.exe C:\\phatch\\phatch.py script2.phatch");
system("C:\\python\\python.exe C:\\phatch\\phatch.py script3.phatch");
system("C:\\python\\python.exe C:\\phatch\\phatch.py script4.phatch");

如果我只做第一个,那很好,但是一旦我添加其他的,它就会全部冻结。

【问题讨论】:

  • 您是否分别尝试了所有四个?也就是试了script1.phatch,然后换成script2.phatch之类的?问题可能只是四个脚本之一。
  • 您确实意识到它不是同时运行所有 4 个,对吗?它连续运行它们(一个接一个)......在Windows上解决这个问题的唯一方法是做类似this
  • 您是否费心在任务管理器中检查系统负载?
  • 是的,它们都有效!你看,它们是周期性工作的,它会连续工作 5 次,然后就会冻结。
  • 是的,我确实意识到它们是串行运行的,但我提到我需要它们在同一“时间”执行,即当用户提交表单时。

标签: php python exec system


【解决方案1】:

可以从同一个帐户同时执行多个 phatch 副本吗?你在没有 PHP 和 Apache 的情况下试过吗?

可能同时开始的多个副本访问相同的文件,可能使用相同的临时文件(即使名称是唯一的,如果名称基于时间,它们可能具有相同的名称...)

【讨论】:

  • 好问题!这可能是问题所在;您看到只启动了一个“cmd.exe”,通过其他方式,只启动了一个 phatch 实例,这可能就是它冻结的原因......知道如何对脚本产生 4 个不同的调用吗?
  • 或者在顶部阅读您的 cmets 的另一个想法:如果您希望它们连续执行,为什么不简单地编写一个运行所有四个脚本的简短 Python 脚本?然后只需要一个系统调用。而且从效率的角度来看,Python 只启动一次!
  • 哦..我觉得很愚蠢.. \:我现在试过了,它似乎工作得很好!我现在已经尝试了 50 次,到目前为止还没有挂起,所以我想这是一个解决方案!谢谢(:
猜你喜欢
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
  • 1970-01-01
  • 2014-07-05
  • 1970-01-01
  • 2010-09-16
  • 2018-01-10
  • 2017-06-23
相关资源
最近更新 更多