我有一臺服務器上的一個Apache/PHP應用程序和第二服務器上的PostgreSQL數據庫。它們被配置爲通過SSL連接。一切正常,但即使$db->setAttribute(PDO::ATTR_PERSISTENT, true);
在腳本中,TCP連接始終關閉。 PHP.INI有pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = 30
和pgsql.max_links = 30
。使用sudo netstat -nap
我可以看到兩臺服務器之間沒有ESTABLISHED連接。我還需要做些什麼來保持連接暢通?每個請求的新連接開銷爲10-12毫秒。PHP的PostgreSQL的持久連接始終貼近
0
A
回答
0
我發現這個便條一種公平的方式下PHP手冊頁面:
如果你想使用持久連接,則必須設置 PDO :: ATTR_PERSISTENT的驅動程序選項傳遞給數組中PDO 構造函數。如果後 實例化對象的設置與PDO ::的setAttribute()這個屬性,驅動程序將不會使用持久 連接。
這就是我出了問題。我用的是這樣的:
$host = explode('.',$_SERVER['SERVER_NAME']);
$db = new PDO($host[0]);
$db->setAttribute(PDO::ATTR_PERSISTENT, true);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
當我本來應該這樣做:
$host = explode('.', $_SERVER['SERVER_NAME']);
$db = new PDO($host[0],null,null,array(PDO::ATTR_PERSISTENT=>true,
PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC));
的DSN的是在一個pdo.ini文件。幸運的是,null用戶和密碼被忽略,否則這也不起作用。現在new PDO
需要0.02毫秒,而不是10毫秒。
相關問題
- 1. PHP MongoDB持久連接
- 2. PHP的mysqli的持久連接錯誤
- 3. 持久連接
- 4. PHP中的memcached持久連接
- 5. 使用SSL的PHP MySQLi持久連接
- 6. PHP中的持久數據庫連接
- 7. PHP:如何知道PostgreSQL持久連接是否已經打開?
- 8. PHP - 持久的連接,太多的連接
- 9. PHP的PostgreSQL連接
- 10. 大量的持久連接
- 11. 扭曲的持久連接
- 12. 持久的http連接Android
- 13. 的Android BLE持久連接
- 14. mysqli的持久連接
- 15. HTTP持久連接
- 16. 持久連接APNS
- 17. MySQL持久連接
- 18. mysql持久連接
- 19. 非持久HTTP 1.1連接比持久連接更快?
- 20. 如何在PHP中保持持久的http連接?
- 21. Kubernetes - PostgreSQL的持久存儲
- 22. PHP的連接到PostgreSQL
- 23. 用於SMPP/SMS的持久套接字/連接PHP
- 24. 創建持久連接
- 25. NLB和持久連接
- 26. SSH持久連接超時
- 27. TCP連接持久狀態
- 28. Tornado Web和持久連接
- 29. 持久數據庫連接
- 30. NSURLConnection和持久連接
使用連接池像pgBouncer。總是。 –