1分钟后500服务器错误

时间:2016-04-07 12:54:19

标签: php mysql timeout

我有一个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秒后停止。但是如果我在收到错误之前关闭浏览器,脚本将继续在服务器上运行。

1 个答案:

答案 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推断超时的。

您可以在某些配置文件中修复此问题,这样您就不必执行上述操作。