在自定義的進程中, 定時任務(wù)每隔15秒運行一次,偶爾會出現(xiàn)下面錯誤
PHP Warning: Error while sending STMT_PREPARE packet. PID=28321 in /data/www/wb/vendor/illuminate/database/Connection.php on line 458
PHP Warning: PDO::prepare(): MySQL server has gone away in /data/www/wb/vendor/illuminate/database/Connection.php on line 458
Warning: PDO::prepare(): MySQL server has gone away in /data/www/wb/vendor/illuminate/database/Connection.php on line 458
我嘗試使用一個新的自定義進程,每隔50秒操作一次數(shù)據(jù)庫,但是沒有解決到問題,請問各位大佬還有什么其他辦法處理嗎?
運行環(huán)境
Workerman version:4.0.19 PHP version:7.3.9
看下數(shù)據(jù)庫是否重啟過
建議用高版本php,這樣能用高版本 illuminate/database, 它底層有做重連
云數(shù)據(jù)庫60秒沒訪問連接會被云數(shù)據(jù)庫清理掉,所以要保證每小于60秒訪問一次數(shù)據(jù)庫?;?。
新建一個新的進程50秒一次訪問數(shù)據(jù)庫只能?;钚碌倪M程的數(shù)據(jù)庫連接,對任務(wù)進程沒有效果。
所以任務(wù)進程也需要50秒通訊一次數(shù)據(jù)庫。
我看了下數(shù)據(jù)庫的wait_timeout=3600, 不知道是不是你說的這個60秒的設(shè)置, 我先按照你說的這個試試,在每個任務(wù)進程做一個50秒的通訊操作。
60秒清理連接不是數(shù)據(jù)庫的配置導致的,不是開發(fā)者能控制的,并且這個連接清理沒有fin包,應(yīng)用層無法感知到連接斷開。只能通過心跳維持。
謝謝指導。 我還沒有升級PHP, 但是按照你說的在任務(wù)進程50秒通訊一次, 從昨天晚上修改后到今天, 沒有報錯了。我今天再觀察一天,后面升級PHP8再測試。