gatewayworker中使用tcp协议连接硬件设备获取数据报错解决办法!

运行后过段时间报错,

 Warning: Error while sending STMT_PREPARE packet. PID=1776 in D:\phpStudy\WWW\ap
i\mysql-master\src\Connection.php on line 1739

其内容在mysql类里面,

/**
* 关闭连接
*/
public function closeConnection()
{echo 88888;
$this->pdo = null;
}

加入打印8888后,打印错误为:


 Warning: PDO::prepare(): MySQL server has gone away in E:\work\xueshengka\api\my
 sql-master\src\Connection.php on line 1747

网上的解决办法:

由于我等待消息队列是一个长连接,而我在等待回调前有个数据库连接,数据库的wait_timeout=28800,所以只要下一条消息离上一条消息超过8小时,就会出现这个错误,我把wait_timeout设置成10,并且捕获异常,发现真实的报错是 MySQL server has gone away ,
所以只要在把等待回调前那次数据库连接主动close掉就可以解决问题

 

只说出了原因,并为解决错误,所以本人亲自试验,在执行完sql后关闭mysql连接,然后重新实例化sql类,执行新的连接数据库操作,结果。。。。。。并没有   卵用

最后弄了一天较劲脑汁,终于找到了解决办法那就是!!!!在Connection连接数据库类里面将报错行,$this->sQuery = @$this->pdo->prepare($query);

前面加上@,强行隐藏报错信息,问题得到了完美解决,开心一笑


 

posted @ 2018-04-13 16:55  御世制人  阅读(2377)  评论(1编辑  收藏  举报