我正在使用WAMP(Apache 2.2.11,MySQL 5.1.36,PHP 5.3.0)编写一个PHP Web应用程序,其中包含指向MySQL数据库的链接。
我在Toad中执行一个大约需要2分钟的程序来执行。如果我尝试在PHP应用程序中运行它,我得到错误“MySQL服务器已经消失...”,“错误读取结果集的标题”,“最大执行时间超过60秒”
我将mysql.connect_timeout提升到600(使用ini_set),将default_socket_timeout提高到600(如this question中所示。这解决了超时错误,但我仍然得到前两个。
我尝试将max_input_time设置为-1,在MySQL服务器端,我将max_allowed_packet提升到256M。这些都没有解决问题。
在不改变正在运行的MySQL程序的情况下,还有其他方法可以绕过此错误吗?
加载网页时:
set_time_limit(0);
ini_set('mysql.connect_timeout', 600);//for long queries
ini_set('default_socket_timeout', 600);//for long queries
//ini_set('max_input_time',-1); //don't know what this does
调用查询时:
if($reconnect===true){
$this->disconnectDB();
}
$this->connectToDB();
if($this->selectDB($dbName)===FALSE){
return false;
}
if(mysql_ping($this->con)===false){
return array();
}
$result = mysql_query($query,$this->con); //this is where the connection "goes away"
答案 0 :(得分:0)
这是PHP设置的结果:maximum execution time of 60 seconds exceeded
。将set_time_limit(0)设置为在需要时禁用时间限制。
MySQL server has gone away in...
可能是几件事的结果。包括MySQL崩溃。您可能需要查看mysql日志以获取线索。