2015-04-15 29 views
1

重复的解答:How to reconnect in php adodb after exceptions: Mysql server gone away or Lost connection to MySQL server during query的mysql_connect不起作用第二次

的mysql_connect工作的第一次,但在此之后从未工程...

$connectDb = mysql_connect(secret, secret, secret); 
mysql_select_db("secret", $connectDb); 

$sleepPeriod = 1800; 
sleep($sleepPeriod); 
while (true) { 
    $result = mysql_query("good query", $connectDb); 
    if (!$result) { 
    if (mysql_error()=='MySQL server has gone away') { 
     echo "MySql connection was disconnected... reconecting...\n"; 
     $connectDb = mysql_connect(secret, secret, secret); 
     mysql_select_db("secret", $connectDb); 
     continue; 
    } else { 
     die("Invalid Query: ".__FILE__.':'.__LINE__.' '.mysql_error()."\n"); 
    } 
    } 
    //DO STUFF 
    sleep($sleepPeriod); 
} 

如果超时或断开发生mysql_connect似乎失败并且mysql_error不断返回"MySQL server has gone away",这导致无限循环,可能持续数天。有没有其他方法可以清除mysql_error的错误响应或使mysql_connect运行第二次,而无需手动重新启动该程序或使用cron。

我只注意到mysql_connect有一个名为new_link一个奇怪的(愚蠢吗?)的参数,但是这将是一个离谱的设计如果PHP的MySQL的代码在默认情况下故意禁用超时重新连接......我就不管测试,并取回。

+1

我不会这样做,只是做你的东西,并退出脚本。您可以使用cron或任务计划程序定期运行您的作业。 – jeroen

+0

我有这样的脚本,需要灵活性来运行一次,每5秒/每5分钟...小时...几天...我要么根据不同的时间单独编码它们,要么编码他们都一样... – user3338098

回答

1

mysql_connect如果连接已断开或超时会从未连接第二个时间,除非你用的参数new_link与价值true调用它并不关心。

mysql_connect($server,$username,$password,true); 
相关问题