簡體   English   中英

PHP 套接字服務器一夜之間失去與 MySQL 的連接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM