PHP脚本忽略最大执行时间,并在第600秒停止
脚本在共享主机上运行,并遵循根php.ini文件。它使用PHP5.4,因此没有安全模式,也没有使用.htaccess文件。 我问支持人员他们是否有任何限制,她说他们的超时时间是两个小时。 在localhost上,它不会停止,但会忽略我的限制 该示例在601-606秒(约10分钟)后停止,而不是1000秒:PHP脚本忽略最大执行时间,并在第600秒停止,php,shared-hosting,time-limiting,Php,Shared Hosting,Time Limiting,脚本在共享主机上运行,并遵循根php.ini文件。它使用PHP5.4,因此没有安全模式,也没有使用.htaccess文件。 我问支持人员他们是否有任何限制,她说他们的超时时间是两个小时。 在localhost上,它不会停止,但会忽略我的限制 该示例在601-606秒(约10分钟)后停止,而不是1000秒: // For immidiately printing in browser header('Content-Type:text/html; charset=UTF-8'); $limit
// For immidiately printing in browser
header('Content-Type:text/html; charset=UTF-8');
$limit = 1000;
set_time_limit($limit);
ini_set('max_execution_time', $limit);
ini_set('max_input_time', $limit);
ini_set('memory_limit', $limit . 'M');
ini_set('max_input_time', $limit);
ini_set('post_max_size', $limit);
ini_set('file_uploads', $limit);
ini_set('upload_max_filesize', $limit);
$start = microtime(1);
// Every second prints elapsed seconds
for ($i=0; $i<1000; $i++){
echo str_pad(round(microtime(1)-$start), 4096);
flush();
sleep(1);
}
//用于在浏览器中即时打印
标题('Content-Type:text/html;charset=UTF-8');
$limit=1000;
设置时间限制($limit);
ini_集合('最大执行时间',$limit);
ini_集合('最大输入时间',$限制);
ini_set('memory_limit',$limit.M');
ini_集合('最大输入时间',$限制);
ini_集('post_max_size',$limit);
ini_集('file_uploads',$limit);
ini_集('upload_max_filesize',$limit);
$start=microtime(1);
//每秒打印经过的秒数
对于($i=0;$i而言,当存在CGI超时值时,通常会发生此类超时,这不是源于php的问题
试试这个:
set_time_limit(0); // run foorreeveeerr
for ($i=0; $i<1000; $i++){
echo str_pad(round(microtime(1)-$start), 4096);
flush();
sleep(1);
set_time_limit(0); // if PHP_CLI SAPI and having error messages
}
及
特别是后者在设置之前和之后
ini_set('max_execution_time');
验证设置是否至少成功。首先关于超时:
不要计算sleep()、system()、file_get_contents()和DB调用。这就是为什么我认为脚本忽略了我的限制
我再次与支持人员交谈,结果发现停止脚本的不是Apache超时,而是“某物”,它监视脚本并在10分钟后停止共享IP客户的脚本。我向他询问了完整的限制列表:
Type | Dedicated | Shared
-----------+-----------+-----------
Apache/Web | 12 hours | 10 minutes
SSH/Shell | 2 hours | 1 hour
Cron Jobs | 1 hour | 30 minutes
Daemons | Unlimited | 10 minutes
类型|专用|共享
-----------+-----------+-----------
Apache/Web | 12小时| 10分钟
SSH/Shell | 2小时| 1小时
Cron Jobs | 1小时| 30分钟
守护进程|无限| 10分钟
这就是为什么它在cron上运行得很好。您是通过浏览器运行的吗?如果是这样,web服务器可能也有超时是的,通过浏览器。我现在使用cron运行它,它工作了!浏览器中有超时吗?不知道浏览器是什么;但是web服务器通常有超时。有没有办法调整共享上的web服务器超时d托管?这一切都取决于您的主机;但是如果运行需要那么长时间,您不应该让浏览器用户等待那么长时间……他们只会感到无聊,并且中止没有帮助。它在Apache上运行,但由于这是共享托管,我无法访问httpd.conf。我可以在.htaccess中更改它吗?是否可以检查limi是什么ts在httpd.conf中与php一起使用?为了确保支持人员知道他们在谈论什么…编辑了答案…现在这是我关于这个主题的全部知识,我希望您能很快找到解决方案,祝您好运。在PHP5.4中,安全模式已被删除,因此ini_get('safe_mode'))不返回任何内容。max_execution_time运行正常。好吧,我会继续思考我能做什么。非常感谢您的帮助!
ini_set('max_execution_time');
Type | Dedicated | Shared
-----------+-----------+-----------
Apache/Web | 12 hours | 10 minutes
SSH/Shell | 2 hours | 1 hour
Cron Jobs | 1 hour | 30 minutes
Daemons | Unlimited | 10 minutes