我的PHP脚本在120秒后完全停止

时间:2012-09-15 16:35:28

标签: php mysql codeigniter zend-server

我正在使用codeigniter,而我正逐行将表数据导入到表中行数超过25000的mysql表中,因此从一个表读取并插入另一个表需要时间。

我注意到每次运行我的脚本时都会像:http://domain.local/importdata一样,它会在导入一些行后停止脚本,并且在检查执行时间之后总是持续120秒。

我试过set_time_limit(0);但没有用,它仍然会在120秒后停止。

在phpinfo()中显示默认的max_execution_time为300。

另外我在windows机器上使用zend服务器。

提前感谢。

3 个答案:

答案 0 :(得分:3)

首先,您应该使用的功能是set_time_limit()

假设这只是一个错字,您的服务器管理员可能已对服务器施加限制。这意味着你不能超过这个限制。试想一下,如果你在某个地方有一个无限循环,你的代码永远不会超时。要验证,请尝试使用set_time_limit(0)并执行phpinfo()。您将在输出中看到两个值。在最右边的列中,PHP配置中的主值,另一个是优先使用的本地值。

Zend manual提到您不应该将它用于执行时间较长的文件。按照如何将文件列入黑名单的说明进行操作。另外,如果您使用的是Apache,请在etc dir中的zendenabler.conf中检查RequestTimeout和ConnectionTimeout。我认为它停止的原因不是因为PHP而是因为Apache或Zend。

答案 1 :(得分:2)

如果您在Windows上使用Zend Server,这可以解决您的问题:

Zend Server Help : configuring_php_timeouts_under_windows_apache

答案 2 :(得分:0)

120秒也是常见的浏览器超时时间。