2010-05-07 90 views
2

我有一个每分钟运行的cron作业。每隔一段时间,而cron的失败,错误:如何在“MySQL服务器已经消失”错误后退出?

MySQL server has gone away

的问题是,这个错误下面所有的查询被执行,有时可能会产生不良的结果。

那么如何检测到错误发生并退出其余代码的执行?

或者任何有关如何解决错误的提示将是伟大的。

+0

*(相关)* http://blog.taragana.com/index.php/archive/mysql-tip-mysql-server-has-gone-使用远程或丢失连接到服务器的查询修复/ – Gordon 2010-05-08 09:30:09

回答

1

错误似乎是由于连接到未响应的服务器,或者您正在使用的超时连接而导致的。

您应该能够从客户端API获取某种错误代码,并查看连接是否仍然有效。

如果失败,可以抛出异常,然后停止程序。

$query_id = mysqli_query($conn_id, $query); 
if(!$query_id) 
{ 
    // throw an exception 
    throw new DatabaseQueryException("An error occurred accessing the database.\nError: \n".mysqli_error($conn_id)); 
} 

是什么,我在我的网站

+0

你可以给一个小的代码片段? – Yeti 2010-05-07 18:45:13

+0

@Lost_in_code你去了,我添加了一个非常简单的。你显然需要用自定义的替换'DatabaseQueryException'(或者''DatabaseQueryException extends Exception {}') – 2010-05-07 18:47:47

0

快速修复是关闭持久的mysql连接。一个更好的解决方法是捕获该特定错误并调用重新连接(PDO::__construct),直到获得具有实时连接的即时消息。我发现当服务器电脑进入睡眠状态或者mysql连接超时时间过短时,我经常会遇到这个错误。

+0

如何关闭持久的mysql连接? – Yeti 2010-05-07 18:44:31

+0

你使用的是PDO还是mysql_ *或mysqli? – 2010-05-07 18:49:28

+0

呃,不太确定。我不是一个真正的php/mysql家伙,而是使用EZSQL来处理SQL。 – Yeti 2010-05-07 18:55:12