isconnected()返回true,尽管mysql服务器在zend框架中消失了


isconnected() return true though mysql server gone away in zend framework

我正在开发zend框架应用程序。我正在服务器上运行一个邮件发送脚本。不知怎的,我在5分钟后从SMTP服务器得到了响应,与此同时,由于mysql等待超时设置,mysql服务器已经离开。我已检查连接是否处于活动状态。我用过

$db->isConnected();

但是它总是返回true,尽管mysql服务器不在了。我不明白isConnected的含义。有人给我解释一下数据库连接是如何工作的吗?

来自手册(强调矿):

自1.7.2版本以来,您可以检查当前是否连接到方法为isConnected()的RDBMS服务器。这意味着连接资源已启动,但未关闭这个函数当前无法测试,例如服务器端关闭连接这在内部用于关闭联系它允许您多次关闭连接没有错误。

http://framework.zend.com/manual/1.12/en/zend.db.adapter.html

换句话说,这是在跟踪连接状态,从您的代码-"我连接了吗?我已经断开了吗?",而不是从底层TCP隧道的角度来看。

(该怎么办:从技术上讲,无论如何,您都应该捕获SQL异常,因此,如果此问题发生在特定点,您可以检查那里是否断开连接(例如,使用$db->query('SELECT 1')),并在引发此异常时重新连接。)