2013-02-08 66 views
0

我有一個很長的PHP腳本(可能持續10分鐘,涉及大量curl調用),我運行的時候或者是作爲Cron job或者直接運行。我正在使用$ wpdb全局變量來進行SQL調用,並且我一直使用「WordPress數據庫錯誤MySQL服務器已經消失」錯誤丟失了mysql數據庫。繼續在wordpress中丟失數據庫

我已經嘗試了別人的建議,將wp-db.php中的wait_timeout值更改爲3600,但它仍然相同。還有什麼我可以做的嗎?

+1

從未有過這個問題我的猜測也將是你從PHP得到一個超時。如果超時不是問題,這可能會有所幫助。與你的數據庫建立持續連接(http://php.net/manual/en/features.persistent-connections.php)。我從來沒有嘗試過,但也許它有幫助。 – 2013-02-08 22:52:36

回答

1

說明明顯,這意味着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

+0

你好,非常感謝你的回答。我做了所有這些,並且在那些長CRON作業期間,我仍然有與MySQL數據庫丟失相同的問題 – 2013-02-11 20:24:48