2009-10-11 166 views
0

我有一個小的PHP框架,基本上只是加載控制器和視圖。 在執行開始和結束時使用microtime(),大約0.004秒內加載一個空白頁面。php mysql db連接速度很慢

這是「問題」。如果我執行以下操作:

$ link = @mysql_connect($ server,$ user,$ pass,$ link); @mysql_select_db($ database,$ link);

頁面大約在0.500秒內加載。高達12500%的時間來渲染空白頁面。

這是正常的還是我在做嚴重錯誤的地方...(我希望後者)。

編輯:有人可以說什麼是一個正常的時間罰款只是連接到像上面的MySQL數據庫。

+0

如果我是你,我不會使用錯誤抑制器,特別是當你在尋找錯誤時);然後,爲什麼你的連接中的$ link? – markus 2009-10-11 18:53:06

+0

該鏈接僅用於打開其他連接。但在這種情況下,它會被視爲錯誤。 刪除@ -sign什麼都不做。 – Adergaard 2009-10-11 18:55:41

+0

你知道建立數據庫連接需要多長時間嗎?多久才能選擇一個數據庫?我的意思是在你加載一個空白頁面之前,現在你正在加載一個頁面,創建一個資源並將它用於查詢。 – markus 2009-10-11 19:03:37

回答

2

Error suppression with @會減慢你的腳本。另外一個SQL連接依賴於服務器的速度。所以如果服務器響應速度慢,你的腳本執行會很慢。

+0

我想這就是它。 服務器可能就是那麼慢地連接到那裏。 我只是想確保我沒有在這裏認真搞笑。謝謝。 – Adergaard 2009-10-11 19:19:34

0

其實,我沒有得到你想要做的$link變量。 $link = @mysql_connect($server,$user,$pass,$link);可能是錯的,可能不這樣做你想要的(即在你的例子沒有),除非你有一個以上的鏈接到數據庫(先進的東西)

the php.net documention states

new_link

如果第二個電話是 mysql_connect()與 相同的參數,沒有新的鏈接將建立 建立,而是,鏈接 標識符已打開的鏈接 將被退回。該new_link 參數改變此行爲 使得mysql_connect()總是打開 新的鏈接,即使mysql_connect() 用相同 參數之前調用。在SQL安全模式下,這個 參數被忽略。

在我的網絡服務器,加載時間始終是約平均同一(4000微秒的第一時間和600微秒第二次)

半秒連接到MySQL數據庫是有點慢但也不罕見。如果它在網絡上的另一臺服務器上存在負載,則可能是絕對正常的。

我不會太擔心這個問題。

(哦,老問題!沒關係,還是回覆)

0

您是否嘗試過驗證數據的完整性?做一個修理表,並對所有表進行優化。我知道,有時當桌子腐敗時,連接時間可能會花費大量時間/一起失敗。

0

可能是域名解析緩慢的原因。

跳過名稱解析

添加這my.cnf文件,然後重啓mysqld。

如果您跳過-name-resolve,則不能在mysql中使用hostname作爲用戶權限。