【发布时间】:2011-12-06 02:15:45
【问题描述】:
我添加了set_time_limit(0); 函数来增加执行时间,但它最多只能执行 2-3 分钟。
error_reporting(E_ALL);
error_reporting(1);
set_time_limit(0);
我想从一个需要很长时间的网站中搜索链接。
【问题讨论】:
标签: php .htaccess scripting php-ini
我添加了set_time_limit(0); 函数来增加执行时间,但它最多只能执行 2-3 分钟。
error_reporting(E_ALL);
error_reporting(1);
set_time_limit(0);
我想从一个需要很长时间的网站中搜索链接。
【问题讨论】:
标签: php .htaccess scripting php-ini
尝试设置更长的max_execution_time:
<IfModule mod_php5.c>
php_value max_execution_time 300
</IfModule>
<IfModule mod_php7.c>
php_value max_execution_time 300
</IfModule>
【讨论】:
在 PHP 7 中使用 mod_php7.c 而不是 mod_php5.c
例子
<IfModule mod_php7.c>
php_value max_execution_time 500
</IfModule>
【讨论】:
这是一个老问题,但如果今天有人发现它,php 很可能会通过 php-fpm 和 mod_fastcgi 运行。在这种情况下,这里没有任何东西可以帮助延长执行时间,因为 Apache 将终止与 30 秒内不输出任何内容的进程的连接。扩展它的唯一方法是在 apache (module/site/vhost) 配置中更改 -idle-timeout。
FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /run/php/php7.0-fpm.sock -idle-timeout 900 -pass-header Authorization
【讨论】:
PHP 文件(例如,my_lengthy_script.php)
ini_set('max_execution_time', 300); //300 seconds = 5 minutes
.htaccess 文件
<IfModule mod_php5.c>
php_value max_execution_time 300
</IfModule>
更多配置选项
<IfModule mod_php5.c>
php_value post_max_size 5M
php_value upload_max_filesize 5M
php_value memory_limit 128M
php_value max_execution_time 300
php_value max_input_time 300
php_value session.gc_maxlifetime 1200
</IfModule>
如果是wordpress,在config.php文件中设置,
define('WP_MEMORY_LIMIT', '128M');
如果是 drupal,sites/default/settings.php
ini_set('memory_limit', '128M');
如果您使用其他框架,
ini_set('memory_limit', '128M');
您可以将内存增加到 千兆字节。
ini_set('memory_limit', '3G'); // 3 Gigabytes
259200 表示:-
( 259200/(60x60 minutes) ) / 24 hours ===> 3 Days
【讨论】:
在您的 htaccess 文件中添加这些代码行。希望能解决你的问题。
<IfModule mod_php5.c>
php_value max_execution_time 259200
</IfModule>
【讨论】:
好吧,由于您在共享服务器上,因此您无能为力。他们通常设置最大执行时间,以便您无法覆盖它。我建议你联系他们。
【讨论】:
嗯,有两种方法可以更改 max_execution_time。
1.可以直接在php.ini文件中设置。
2.其次,您可以在代码中添加以下行。
ini_set('max_execution_time', '100')
【讨论】:
您的网络服务器中可能设置了限制。一些浏览器/代理也会实现超时。通过 HTTP 请求调用长时间运行的进程简直是愚蠢的。解决问题的正确方法(假设您不能使处理速度更快)是使用 HTTP 请求在 webserver 会话组之外触发处理,然后通过 HTTP 轮询状态,直到获得结果集。
【讨论】: