1

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

我注意到每次我运行我的脚本时,如:http://domain.local/importdata它在导入一些行后停止脚本,并且在检查其执行时间后,它总是恰好为 120 秒。

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

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

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

提前致谢。

4

3 回答 3

3

首先,您应该使用的函数是set_time_limit()

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

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

于 2012-09-15T16:46:55.793 回答
2

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

Zend 服务器帮助:配置_php_timeouts_under_windows_apache

于 2013-07-15T10:06:43.610 回答
0

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

于 2012-09-21T22:43:37.677 回答