Пожалуйста, научите его о mysql_pconnect - PullRequest
0 голосов
/ 02 апреля 2009

Прочитал спецификации mysql_pconnect функции PHP .. «mysql_pconnect - это то, что соединение с сервером SQL не закрывается, даже если выполнение сценария завершено».

Это возможно, если соединение не закрыто, но будет ли оно оставаться до момента перезагрузки mysql?

Ответы [ 3 ]

1 голос
/ 02 апреля 2009

Я думаю, и могу ошибаться, но ...

Я думаю, что pconnect - это постоянное соединение, которое поддерживается не для выполнения сценария, а для продолжительности сеанса PHP / сеанса MySQL, что PHP-соединение поддерживает сокет независимо от того, какой сценарий выполняется. Немного похоже на открытие нескольких документов в слове вместо нескольких экземпляров блокнота. при использовании общей ссылки на базу данных вычислительная мощность для создания отдельных ссылок не требуется.

Тем не менее, после прочтения, я думаю, что это будет полезно, только если PHP запускается как модуль Apache, а не в режиме CGI.

Позвони мне по поводу моей дезинформации.

1 голос
/ 03 апреля 2009

mysql_pconnect позволяет модулю Apache mod_php создавать пулы соединений. Вы все еще можете вызвать mysql_close, но mod_php фактически не закроет его; это просто сделает недействительным ваш дескриптор ресурса. К сожалению, модуль не имеет никакой конфигурации для этого, поэтому пул соединений подключается сервером MySQL через его параметр wait_timeout. Значение по умолчанию достаточно высокое, поэтому, если вы хотите воспользоваться этим преимуществом, вам, вероятно, захочется уменьшить эту переменную.

Пул соединений сохраняет две вещи: настройку соединения и создание потока MySQL. Настройка соединения с MySQL очень быстрая по сравнению с другими базами данных, но веб-сайт с высоким спросом все еще может получить выгоду от сокращения этого шага. Стоимость создания потоков в MySQL в большей степени зависит от базовой ОС, но все же может быть выгодной для загруженного сайта.

Оба аспекта необходимо рассмотреть в более широкой картине скорости веб-сайта и нагрузки, которую он представляет в вашей базе данных. Можно использовать потоки соединений в базе данных с достаточно занятым сайтом, используя пул соединений. Существует также аспект, который требует от приложения все возможное, чтобы соединение оставалось в согласованном состоянии, поскольку вы больше не можете полагаться на закрытие соединения для выполнения таких операций, как разблокировка таблиц и транзакции отката.

Более подробная информация содержится в документации PHP .

0 голосов
/ 02 апреля 2009

да, но вы можете не закрыть его, используя mysql ___ close .

Он закроется, когда вы перезагрузите сервер MySQL или когда соединение будет бездействовать (не используется) в течение определенного периода времени, определенного в переменной конфигурации wait_timeout .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...