2011-12-07 70 views
2

我在共享服務器上設置了CS-CART電子商務。最近,它有一些問題,我得到的MySQL錯誤,像這樣的人:可以通過服務器/託管導致mysql查詢錯誤?

PHP Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/mp/public_html/core/db/mysql.php on line 53 
PHP Warning: mysql_errno(): supplied argument is not a valid MySQL-Link resource in /home/mp/public_html/core/db/mysql.php on line 57 
PHP Warning: mysql_errno(): supplied argument is not a valid MySQL-Link resource in /home/mp/public_html/core/db/mysql.php on line 57 
PHP Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in /home/mp/public_html/core/db/mysql.php on line 64 
PHP Warning: mysql_errno(): supplied argument is not a valid MySQL-Link resource in /home/mp/public_html/core/db/mysql.php on line 127 

奇怪的是,我隨機收到錯誤,隨機的網頁。這不是出現在某個頁面上或做某件事之後的東西。

爲了讓事情變得更加複雜,這只是有時會發生。這有可能是由服務器/ mysql進程造成的嗎?

例如,優秀的網站負載,現在,所有的功能完美的工作 - 我測試的最常用的功能,網頁,和我沒有收到錯誤。幾個小時前,一切都加載緩慢,一些頁面返回上面的錯誤。

任何輸入將不勝感激。 謝謝。如果MySQL服務器不可用和PHP錯誤處理未實現預期該

回答

2

象這樣的錯誤可能發生。 mysql_connect()返回爲數據庫服務器的MySQL資源指針,但僅當連接實際工作時才返回。如果沒有,資源指針是空的,並且在該行下面的功能開始抱怨,這是你在那裏看到的。如果這只是間歇性發生,這是MySQL服務器過載的典型徵兆。

如果你是一個共享的主機服務器上,機會是另一個租戶有時用盡所有的資源,所以沒有什麼可以做。但是你可以做很多事情來進一步追蹤問題。如果您的phpMyAdmin界面允許您訪問「狀態」選項卡,則可以使用它來深入瞭解MySQL服務器的狀態。

例如,看它執行查詢的數量,並且它允許同時連接的數量。有時候,連接會被拒絕,因爲最大連接數量已經耗盡(某些主機環境允許您更改此設置)。服務器還會記錄失敗統計信息,它可能會爲您提供有關正在發生的事情的一些線索。

但是,如果你有這些統計數據無法訪問,或無法更改服務器上的任何設置,你有足夠確保您的應用程序不會導致流量過載,你應該打開一個支持票與你託管提供商。

+0

我認爲這可能是原因。這些錯誤太過於隨意,無法從其他方面獲得。它可能是一個糟糕的SQL查詢掛起mysql進程?例如,查詢一旦運行,mysql進程就會被重載,所有其他查詢將運行緩慢甚至返回錯誤。 MySQL進程是否有超時或類似的東西? – ChrisNN

+0

是的,它絕對是一個緩慢的查詢。 「狀態」頁面還顯示緩慢運行的查詢以及它們發生的頻率。雖然大多數PHP環境都有每個請求的超時時間(通常在30到60秒之間),MySQL查詢卻沒有。因此,即使最初調用它們的進程已經很長時間了,殭屍查詢也是完全有可能的。再次,在共享主機環境中,您可能在此遭受別人的罪過。 – Udo

+0

別人也提到這個 - http://dev.mysql.com/doc/refman/5.0/en/gone-away.html - 可能是問題所在。你怎麼看? – ChrisNN