2010-08-03 24 views
6

另一个脑筋急转弯的东西我猜是非常罕见的。PHP脚本很早就结束了,没有任何错误和超时设置为0的证据。

在PHP中有硬限制吗?或者在Apache?我昨晚有一个剧本跑了大概20个小时。然后它就停下来,中间脚本在一个随机的线上,没有我能找到的错误。

set_time_limit(0);被设置在剧本中,但我开始怀疑在其他地方是否有另外的限制大约20小时...

有什么想法吗?

非常感谢提前。

编辑:这是作为wget运行。

edit2:我要看看内存问题并回复给你,感谢迄今的帮助!

edit3:哦我应该指出这个脚本正在收集数据并将其存储在一个数组中,它运行的时间越长,它存储的就越多,所以是的,我有点儿掌握了“用完所有内存“这里的答案......

解决方法:为操作设置一个更大的内存来解决这个问题。谢谢大家。

+0

你到底想干什么? – Sarfraz 2010-08-03 09:41:15

+0

你是以cli还是从apache运行(如mod/cgi)? – NikiC 2010-08-03 09:42:35

+0

没有冒犯,但它是私人:)这是一个脚本,需要阅读一些信息,在20小时内它通过它的大部分(约85%),但它需要更多的时间。而且没有简单的方法来分割信息。 – Dorjan 2010-08-03 09:43:37

回答

3

很可能是php-cli刚崩溃或服务器重新启动。我不认为PHP是要执行那么长的

+0

事实上,有多个脚本运行,其他脚本继续(他们在不同的点运行时间较短)显示服务器没有崩溃,但你可能是正确的关于一段时间后php失败。 – Dorjan 2010-08-03 09:50:11

+2

也许你应该从命令行运行脚本,而不是通过apache运行脚本,也可能是该脚本的内存消耗很高,可以使用ini_set('memory_limit','128M')来增加脚本的内存消耗。 – 2010-08-03 09:54:44

+0

谢谢Christian,我现在看一下当前的设置 – Dorjan 2010-08-03 10:06:27

2

我有一个脚本运行了几个月没有问题。我只是不得不杀死进程来终止脚本。所以没有限制,如果你有set_time_limit(0);在你的代码中。你有没有看过操作系统的系统和调试日志?这可能会提供进一步的线索为什么PHP或Apache崩溃。

+0

这是有帮助的,因为现在我知道PHP可以运行这么长的时间 – Dorjan 2010-08-03 10:10:36

0

因为您使用了wget,我假设它在apache下运行。也许它是一个运行脚本的限制,而不是你的PHP应用程序的Apache。

,你可以通过运行CLI版本

+0

Apache Timeout是httpd.conf中的TimeOut指令。如果未指定值,则默认值为300秒http://httpd.apache.org/docs/2.0/mod/core.html#timeout – 2010-08-03 10:07:05

+0

不幸的是,我没有时间让应用程序运行rom cli,因为路径似乎是不同的包括之类的(我不记得现在为什么我不得不离开它,但我记得首先尝试cli方式,并以wget结束,尽管我不想也是如此) – Dorjan 2010-08-03 10:13:39

2

应用为stillstanding说测试,检查Apache日志,/var/log/error.log,或在Windows的“事件”。

+0

imho你的脚本中必须有错误,也许你违反了php的内存限制? – a1337q 2010-08-03 09:59:10

+0

php内存限制可能是更可能的嫌疑人!我没有想到,谢谢。 – Dorjan 2010-08-03 10:04:53

+0

现在也检查日志 – Dorjan 2010-08-03 10:14:40

-1

检查的php.ini文件找到的max_execution_time使得它需要几秒钟的输入该部分的变化。

但在编辑的php.ini小心

+0

时间限制在原始帖子中声明为禁用。 – Dorjan 2010-08-03 10:10:14