我有一个网站的问题,连接到一个MySQL数据库使用两种类型的连接在不同的部分:一些PDO,一些mysql_connect()。
网站的第一部分是使用非常经典的'mysql_query()‘PHP函数请求MySQL。这部分对地理数据进行了一些繁重的查询。其中一些请求(已经优化)需要很长时间。
网站的另一部分是最近的,通过PDO连接使用Doctrine制作的。
问题是,当一个大进程在一个浏览器页面中运行时(处理和返回页面可能需要大约1分钟),如果用户打开另一个页面,PDO连接处于休眠模式,并阻止加载整个页面。在60s ( MySQL的wait_timeout)之后,连接被终止,并且PDO收到异常“MySQL服务器已消失”。
奇怪的是,只有经典的mysql_connect()和mysql_query()的其他页面可以毫无问题地并行运行,只有PDO查询会停滞不前并最终死亡。
任何意见都会非常感谢。
发布于 2011-09-14 22:13:10
结束这个问题,它实际上与php会话在写入时被挂起,阻止其他进程运行有关。session_write_close()解决了这个问题。
发布于 2015-07-03 18:05:04
连接关闭的原因有很多。
参考:https://dev.mysql.com/doc/refman/5.0/en/gone-away.html
我在使用PDO时也遇到了类似的问题,如果连接休眠超过一分钟,主机管理员就会终止连接。因此,我想出了我自己的类,它将包装PDO类。这将检测连接是否关闭,并在查询执行时尝试重新连接。
下面的答案
https://stackoverflow.com/questions/7404364
复制相似问题