使用PHP時可能會緩存數據庫連接,就像在J2EE容器中一樣?如果是這樣,怎麼樣?PHP中的連接池
PHP中的連接池
回答
您不能手動實例化連接池。
但是,您可以使用「內置」連接池與mysql_pconnect功能。
我想你使用的是mod_php,對不對?
當一個PHP文件完成執行時,它的所有狀態都會被終止,因此沒有辦法(在PHP代碼中)執行連接池。相反,你必須依靠擴展。
您可以mysql_pconnect這樣您的連接在頁面結束後不會關閉,這樣它們就可以在下一個請求中被重用。
這可能只是你需要的,但這與連接池不同,因爲沒有辦法指定維護打開的連接數。
乾杯。
連接可以被不同的用戶重用嗎?如果是這樣,爲什麼手冊說我們應該配置MySQL以避免連接太多? – omg 2009-08-30 14:28:40
在php中沒有連接池。
mysql_pconnect and 連接池是兩個不同的東西。 有很多與mysql_pconnect
有關的問題,首先您應該閱讀手冊並小心使用它,但這不是連接池。
連接池是應用程序服務器管理連接的一種技術。當應用程序需要連接時,它會嚮應用程序服務器請求連接,如果有空閒連接,應用程序服務器將返回其中一個連接的連接。
我們可以爲請到通過下面的鏈接做的PHP連接縮放:http://www.oracle.com/technetwork/articles/dsl/white-php-part1-355135.html
所以在PHP中沒有連接池。
由於Julio說apache會在當前請求結束時釋放所有資源。你可以使用mysql_pconnect,但是你受限於這個功能,你必須非常小心。其他選擇是使用單例模式,但沒有一個是共享。
這是一個很好的文章:http://blogs.oracle.com/opal/2007/01/highly_scalable_connection_poo.html
沒有連接池?哇。 – Justin 2011-07-13 22:35:18
持久連接都沒有像連接池。如果您在同一個請求/腳本執行上下文中創建多個數據庫連接,則只會重用php中的持久連接。在大多數典型的web dev場景中,如果您使用mysql_pconnect,您將最大限度地提高連接速度,因爲您的腳本將無法在下次請求時獲取對任何打開連接的引用。在php中使用db連接的最佳方式是創建一個db對象的單例實例,以便在腳本執行的上下文中重用連接。這仍然會導致每個請求至少有1分貝連接,但是它比每個請求連接多個分貝連接要好。
由於php的性質,在php中沒有真正的db連接池。Php不是一個應用程序服務器,它可以在請求之間坐在那裏,並管理對開放連接池的引用,至少在沒有某種重大黑客入侵的情況下。我認爲理論上你可以在php中編寫一個應用服務器,然後將其作爲一個命令行腳本運行,只需要在後臺放置一些數據庫連接,並將引用傳遞給其他腳本,但我不會知道這在實踐中是否可行,如何將命令行腳本中的引用傳遞給其他腳本,並且我懷疑它即使可以實現也會表現良好。無論如何,這主要是猜測。我只是注意到其他人發佈到apache模塊的鏈接,以允許prefork服務器(如php)的連接池。看起來有趣: https://github.com/junamai2000/mod_namy_pool#readme
您可以使用MySQLi。
欲瞭解更多信息,向下滾動到連接池部分@http://www.php.net/manual/en/mysqli.quickstart.connections.php#example-1622
注意,連接池也取決於你的服務器(即Apache的httpd的)和它的配置上。
- 1. Php - 將連接池連接到Mysql
- 2. PreparedStatement的池連接池
- 3. MySQL .NET連接器中的連接池
- 4. 連接池中的連接無效
- 5. .net中的連接池
- 6. Java中的連接池
- 7. C中的OrientDB連接池#
- 8. 池中的連接用盡
- 9. GlassFish中的HTTP連接池
- 10. .NET中的連接池
- 11. Netty中的連接池
- 12. Java SE中的連接池?
- 13. java中的連接池
- 14. Java中的Oracle連接池
- 15. 在asp.net中的連接池
- 16. asyncpg - 連接vs連接池
- 17. 連接池 - 無連接
- 18. 的Node.js - 連接池
- 19. Weblogic的連接池
- 20. 對象池vs連接池
- 21. 文件池(如連接池)
- 22. DBCP連接池
- 23. 連接池
- 24. phpcassa連接池
- 25. H2連接池
- 26. Cloudant - 連接池
- 27. Weblogic連接池
- 28. sql連接池
- 29. HTTP連接池
- 30. .net連接池
這個怎麼樣? https://github.com/junamai2000/mod_namy_pool – nam 2012-03-01 22:25:19
您是否使用[mysql_pconnect()](http://www.php.net/mysql_pconnect)查看了持久連接? – 2008-09-02 15:44:57