【问题标题】:PHP script makes a duplicatePHP脚本重复
【发布时间】:2014-02-20 15:12:38
【问题描述】:

我有一个长时间运行的 PHP 脚本,其中设置了 set_time_limit(0)。它对15 minutes (900 sec) 非常有效,但随后变得非常奇怪:启动了具有相同参数的第二个进程!我看到它是因为我在脚本开头开始了一个新的日志文件,并且有两个日志文件处理相同的数据!

BTW 脚本使用

在 PHP 后台运行
exec('wget http://example.com/script.php?id=NNN > /dev/null &');

这条指令通常只运行一次,在900 seconds(确切时间)之后我无法得到第二次运行的指令。

【问题讨论】:

  • 您的 PHP 是否在安全模式下运行?因为您不能在安全模式下影响最大执行时间。另外你的会话寿命是多少?可能会话超时。
  • @i-CONICA PHP5.4 没有安全模式。并且 set_time_limit(0) 效果很好,因为第一个脚本实例没有停止,它们都运行到最后。这里根本没有使用 PHP 会话。

标签: php linux centos wget


【解决方案1】:

这是因为 wget 的读取时间限制为 900 秒。到达后,重新开始下载。 您可以使用 --timeout=seconds 或 --read-timeout=seconds 参数将超时设置得更高。 或者,您可以直接从 shell 启动它(这种方式要好得多)。 这是一个链接:wget download options 这是shell代码(适用于Linux):

exec('php yourscript.php > /dev/null 2>&1 &');

【讨论】:

  • 谢谢,问题肯定出在 wget 中,但我将其踢出并在命令行使用下重新制作整个脚本。现在效果很好!非常感谢,亲。
猜你喜欢
  • 2019-06-27
  • 2019-04-04
  • 2017-02-09
  • 2012-07-04
  • 1970-01-01
  • 2012-07-08
  • 2010-11-13
  • 2014-02-01
  • 2014-05-01
相关资源
最近更新 更多