PHP套接字服务器一夜之间失去了与MySQL的连接



我有一个PHP套接字服务器,它坐在那里等待连接,然后与数据库对话以解决它们。当我测试时,它工作得很好,但当我把它放在那里时,第二天早上它就不再与数据库对话了。

当我查看日志时,我看到的是:

200327 11:54:37    24 Connect   dbuser@localhost as anonymous on dbname
24 Quit  

我期待看到更多这样的东西:

200327 11:54:20    23 Connect   dbuser@localhost as anonymous on dbname
23 Query SELECT * FROM table1 WHERE num=4
23 Query SELECT * FROM table2 WHERE num='4' AND info='deleted'
23 Query SELECT * FROM table3 WHERE num='4'
23 Quit  

但由于某种原因,在服务器运行了一段时间后,在最初的连接之后,查询永远不会通过。

我唯一能想到的是,也许我的PDO对象在某种程度上超时了,因为我在启动服务器时创建了它一次。

$dbh = new PDO($dbName,$dbUser,$dbPass);

对可能发生的事情有什么想法吗?如果在流程开始时创建PDO对象不正确,如何更好地管理该资源?

PHP是PHP 7.0.33,MySQL是10.1.44-MariaDB-0+deb9u1 Debian 9.11。

Mysql服务器将在"wait_timout"秒后关闭非活动连接。变量描述如下:https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_wait_timeout

我建议每次请求到达套接字时都在客户端(php(打开新的连接,并在作业完成后关闭,因为增加wait_timeout可能会导致太多挂起的连接(除非php服务器永远不会停机并重复使用相同的数据库连接(

最新更新