[英]PHP Socket Server Loses Connection to MySQL Overnight
我有一个 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 服务器永远不会关闭并重用相同的数据库连接)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.