63

我需要在localhost(xampp)中运行一个脚本,它将生成14400条记录并将它们添加到数据库中,我已经设置了max_execution_time = 50000000000,我不知道是否可以通过将其设置为0或-1来使其不受限制。但是我之前用这个 max_execution_time 到 50000000000 尝试了这个脚本,但它在某个点停止了,我不知道还有什么可以限制执行时间,我已经运行了很多次,我厌倦了等待和再次失败,什么我应该在再次运行此脚本之前进行更改,这次完成工作吗?

4

4 回答 4

168

您必须将其设置为零。零意味着脚本可以永远运行。在脚本开头添加以下内容:

ini_set('max_execution_time', 0);

参考PHP文档max_execution_time

注意:

set_time_limit(0);

会有同样的效果。

于 2013-04-02T23:42:58.897 回答
2

您的脚本可能正在停止,不是因为 PHP 超时,而是因为您用于访问脚本的浏览器(即 Firefox、Chrome 等)超时。不幸的是,很少有简单的方法来延长这个超时时间,而且在大多数浏览器中你根本做不到。您可以在此处选择通过终端访问脚本。例如,在 Windows 上,您将确保 PHP 可执行文件在您的路径变量中,然后我认为您执行:

C:\path\to\script> php script.php

或者,如果您使用的是 PHP CGI,我认为是:

C:\path\to\script> php-cgi script.php

另外,您还可以ini_set('max_execution_time', 0);像其他人提到的那样在脚本中进行设置。以这种方式运行 PHP 脚本时,我很确定您可以根据需要使用缓冲区刷新定期将脚本的进度回显到终端。我认为这种方法的最大问题是脚本一旦启动就真的无法停止,除了停止整个 PHP 进程或服务。

于 2017-12-02T05:50:43.357 回答
0

正如@Peter Cullen 回答提到的那样,您的脚本将首先遇到浏览器超时。因此,提供一些日志输出是个好主意flush(),但是连接有缓冲区,除非提供大量输出,否则您将看不到任何东西。以下是有助于提供可靠日志的代码片段:

set_time_limit(0);
...
print "log message";
print "<!--"; print str_repeat (' ', 4000); print "-->"; flush();
print "log message";
print "<!--"; print str_repeat (' ', 4000); print "-->"; flush();
于 2020-09-15T14:03:44.117 回答
0

.htaccess 文件中的以下代码对我有用:

php_value max_execution_time 0
RewriteEngine On
RewriteRule .* - [E=noconntimeout:1]
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
<IfModule mod_php5.c>
#Session timeout
php_value session.cookie_lifetime 10
php_value session.gc_maxlifetime 10
</IfModule>
于 2021-12-19T07:39:35.280 回答