1分钟后出现500服务器错误



我有一个php脚本,它从远程主机获取mysql表并将它们插入本地数据库。

我需要该脚本运行一段不受限制的时间,但它在60秒后不断出现500服务器错误。

我试过这样改变ini变量:

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秒。

我删除了数据库脚本,只运行了一个sleep(70)来查看在如上所述设置的时间限制下发生了什么,60秒后脚本仍然给出500个错误。

更新

奇怪的是,如果我把浏览器指向脚本并运行它,它会在60秒后停止。但是,如果我在收到错误之前关闭浏览器,脚本将继续在服务器上运行。

好吧,我希望这能帮助其他遇到同样噩梦般问题的人。

当您长时间运行脚本,但没有输出时,就会出现问题。我只是通过确保脚本每隔几秒钟输出一次内容来修复它。对我来说是:

$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如何推断超时。

你可能可以在一些配置文件中修复这个问题,这样你就不必进行上述破解。

相关内容

  • 没有找到相关文章

最新更新