У меня есть приложение 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 Manual:
Если вы хотите использовать постоянные соединения, вы должны установить 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 файла. Нулевой пользователь и пароль, к счастью, игнорируются, иначе это тоже не сработает. Теперь new PDO
принимает 0,02 мс вместо 10 мс.
Смежные вопросы
- 1. PHP и постоянные соединения
- 2. php и постоянные HTTP-соединения
- 3. Соединения Oracle не закрываются
- 4. Dashing: соединения не закрываются
- 5. соединения не закрываются
- 6. Соединения MySQL не закрываются
- 7. постоянные соединения и max_user_connections
- 8. Почему не поддерживаются постоянные соединения URLLib2?
- 9. соединения закрываются через некоторое время
- 10. Постоянные соединения с конвейерная
- 11. NSURLConnection и постоянные соединения
- 12. NLB и постоянные соединения
- 13. popen handle через постоянные соединения
- 14. Постоянные соединения для живых обновлений
- 15. Как отключить постоянные прокси-соединения
- 16. Tomcat8 + c3p0, соединения прерываются и закрываются автоматически
- 17. Соединения базы данных DBCP не закрываются
- 18. Соединения WCF очень медленно закрываются с SSL
- 19. Соединения LDAP не закрываются при использовании LdapTemplate
- 20. LINQ to SQL DB Соединения не закрываются
- 21. SFTP-соединения не закрываются (Renci & C#)
- 22. Закрывает ли «mysqli :: close» постоянные соединения?
- 23. Mysql постоянные соединения и преимущества mysql_pconnect?
- 24. Модификации SemanticUI всегда закрываются, независимо от конфигурации
- 25. Постоянные соединения, которые не сохраняются между двумя сценариями php
- 26. do db соединения закрываются Сразу же после завершения обработки страницы?
- 27. Непротиворечивые HTTP 1.1 соединения быстрее, чем постоянные?
- 28. Django постоянные соединения API между запросами
- 29. Можно ли использовать постоянные соединения с System.Net.Http.HttpClient?
- 30. Как распределяются постоянные соединения Django (CONN_MAX_AGE)?
Используйте пул соединений, например pgBouncer. Всегда. –