【发布时间】:2015-06-21 15:58:42
【问题描述】:
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 代码在默认情况下故意禁用超时重新连接,那将是一个令人发指的设计......我会测试无论如何回来吧。
【问题讨论】:
-
我不会这样做,只是做你的事情并退出脚本。您可以使用 cron 或任务调度程序定期运行您的作业。
-
我有类似这样的脚本,需要灵活地每秒运行一次,每 5 秒/每 5 分钟...小时...天...我要么必须以不同的方式对它们进行编码仅取决于时期,或将它们全部编码...
标签: php mysql mysql-connect mysql-error-1005