我試圖優化我的一些PHP代碼。我發現我的PHP腳本的大部分時間都是在腳本開始連接到mysql數據庫的過程中花費的。任何方式來保持在PHP連接到MySQL數據庫?
我只在開始時連接數據庫一次,並在腳本結尾處關閉數據庫連接。
但是對於每個請求這個頁面的用戶都必須建立一個新的連接。
有沒有辦法保存對數據庫的引用並共享所有請求?
我試圖優化我的一些PHP代碼。我發現我的PHP腳本的大部分時間都是在腳本開始連接到mysql數據庫的過程中花費的。任何方式來保持在PHP連接到MySQL數據庫?
我只在開始時連接數據庫一次,並在腳本結尾處關閉數據庫連接。
但是對於每個請求這個頁面的用戶都必須建立一個新的連接。
有沒有辦法保存對數據庫的引用並共享所有請求?
你可以使你的連接持久化(PDO使用PDO::ATTR_PERSISTENT => true),但我的推理是找出爲什麼你的腳本花了很多時間連接到mysql並在那裏做一些改進。
考慮一下:
skip-auto-rehash
從my.cnf
)是的,你可以做到這一點。
如果您使用MySQLi擴展(老一個未經我末是過時!),你可以通過創建實例時傳遞p:
作爲前綴的主機名的持久連接:
請參閱mysqli::__construct。
如果你真的使用舊的MySQL擴展,有mysql_pconnect的持久連接。
或者,如果您使用的是PDO,那麼您可以使用setAttribute()
來使用PDO::ATTR_PERSISTENT
。
有關在PDO
中使用長連接的文檔。
我可以知道downvote的原因嗎? – hjpotter92 2013-03-03 13:58:02
看起來有人花時間報復你們倆投票嗎? – PeeHaa 2013-03-03 14:01:08
@PeeHaa猜猜所以。 – hjpotter92 2013-03-03 14:04:38
「我想,大部分時間......」你想通怎麼樣?你真的測試過它嗎?如果不測試瓶頸是什麼,做這種事情是沒有用的。 – PeeHaa 2013-03-03 13:54:10
我測試過了。 ;) – 2013-03-03 13:56:30
你也可能想看看緩存。 – PeeHaa 2013-03-03 14:01:42