我有一個很長的PHP腳本(可能持續10分鐘,涉及大量curl調用),我運行的時候或者是作爲Cron job或者直接運行。我正在使用$ wpdb全局變量來進行SQL調用,並且我一直使用「WordPress數據庫錯誤MySQL服務器已經消失」錯誤丟失了mysql數據庫。繼續在wordpress中丟失數據庫
我已經嘗試了別人的建議,將wp-db.php中的wait_timeout值更改爲3600,但它仍然相同。還有什麼我可以做的嗎?
我有一個很長的PHP腳本(可能持續10分鐘,涉及大量curl調用),我運行的時候或者是作爲Cron job或者直接運行。我正在使用$ wpdb全局變量來進行SQL調用,並且我一直使用「WordPress數據庫錯誤MySQL服務器已經消失」錯誤丟失了mysql數據庫。繼續在wordpress中丟失數據庫
我已經嘗試了別人的建議,將wp-db.php中的wait_timeout值更改爲3600,但它仍然相同。還有什麼我可以做的嗎?
說明明顯,這意味着MySQL的關閉連接,或者是因爲 - 你比max_allowed_packet
,或 發送查詢更大的 - 你比查詢之間wait_timeout
需要較長的時間。
假設它是超時,
把$wpdb->query("set wait_timeout = 1200")
腳本附近開始 - 這可以節省您的修改WP核心文件。
如果仍然不起作用,請嘗試MySQL的'ping'功能。在wp-includes/wp-db.php
,發現function query(
,並根據該一點與mysql_query
行 - 上面,添加行
mysql_ping($dbh);
平檢查連接,並嘗試重新連接 - 我發現它在長時間運行是非常有用的腳本。
希望這件事會(a)有意義,(b)爲你工作。並且爲了其他讀者的利益,不要忘記升級Wordpress會覆蓋您對核心文件所做的任何更改。
鏈接:http://blog.webyog.com/2009/09/02/%E2%80%9Cmysql-server-has-gone-away%E2%80%9D-part-2-session-timeout/和http://php.net/manual/en/function.mysql-ping.php
你好,非常感謝你的回答。我做了所有這些,並且在那些長CRON作業期間,我仍然有與MySQL數據庫丟失相同的問題 – 2013-02-11 20:24:48
從未有過這個問題我的猜測也將是你從PHP得到一個超時。如果超時不是問題,這可能會有所幫助。與你的數據庫建立持續連接(http://php.net/manual/en/features.persistent-connections.php)。我從來沒有嘗試過,但也許它有幫助。 – 2013-02-08 22:52:36