我有一个php脚本,它从远程主机获取mysql表并将它们插入本地数据库。
我需要脚本运行无限的时间,但它在60秒后仍然会出现500服务器错误。
我试过像这样改变ini vars:
ini_set('max_execution_time', 0);
ini_set('max_input_time', -1);
ini_set('default_socket_timeout', 15);
ini_set('mysql.connect_timeout', 15);
set_time_limit(0);
并在php.ini中设置它们。打印配置变量时,我可以看到这些更改生效。但是我的脚本在执行了60秒后仍然保持500分。
我错过了什么?
修改
我不相信这与任何尺寸限制有任何关系,如链接"复制"题。这是因为在运行此脚本时,我在数据库上有非常不同的结果,有时会插入100.000行,有时会插入300.000,每次,错误几乎都会显示为60秒。
我删除了数据库脚本,只运行了一次睡眠(70),看看上面设置的时间限制发生了什么,60秒后脚本仍然出现500错误。
更新
如果我将浏览器指向脚本并运行它,这很奇怪,它会在60秒后停止。但是如果我在收到错误之前关闭浏览器,脚本将继续在服务器上运行。
答案 0 :(得分:1)
好的,我希望这可以帮助那些同样遇到问题的噩梦。
当您运行脚本很长一段时间但没有输出时会出现问题。我只是通过确保脚本每几秒输出一次来修复它。对我来说是:
$counter = 0;
while($continue === TRUE){ //The long loop
if($counter%1000==0) echo '.'; //write out a dot every 1000 iterations
$counter ++;
//Code...
}
我在这里提示我的问题: https://serverfault.com/questions/277386/apache-2-2-cgi-timeout-configuration
如果脚本没有输出几秒钟(对我来说是60),这是关于如何通过apache推断超时的。
您可以在某些配置文件中修复此问题,这样您就不必执行上述操作。