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

标签 php mysql timeout

我有一个 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 如何推断超时的内容。

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

关于php - 1分钟后出现500服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36476823/

相关文章:

php - 当我使用内连接关键字时得到错误的数据

php - 如何使用带有唯一 ID 的 insert_batch

javascript - 如何在外部安全网站上创建超时

asp.net - IE超时后重新发送请求?

javascript - 使用 AJAX 将值从 JavaScript 传递到 PHP

php - 什么是与 PHP 框架的依赖注入(inject)相结合的良好 DAO 模式?

php - 不同年份和月份的日期范围

php - 使用 imagick PHP 在 png 图像周围添加边框

Mysql交集查询性能

server - 由于erlang超时,如何触发handle_info?