Что лучше: mysql_connect или mysql_pconnect

Я новичок PHP, работающий с некоторыми сценариями, чтобы отображать некоторые статьи новостей из базы данных и хотел узнать несколько вещей.

  • Для открытия соединения с базой данных MySQL, которая является лучшим вариантом mysql_connect или mysql_pconnect?
  • В чем преимущества или недостатки использования постоянного соединения с базой данных?
  • И в каком сценарии будет вызываться постоянное соединение?

Ответ 1

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

Вот несколько хороших ссылок на НЕ ИСПОЛЬЗОВАНИЕ постоянное соединение в веб-приложениях

  • Когда вы блокируете таблицу, обычно она разблокируется, когда соединение закрывается, но поскольку постоянные соединения не закрываются, любые таблицы, которые вы случайный отпуск заблокирован, останется заблокированным, и единственный способ разблокировать их - дождаться соединения с таймаутом или убить обработать. Такая же проблема блокировки возникает при транзакциях. (Видеть комментарии ниже 23 апреля 2002 года и 12 июля 2003 года)

  • Обычно временные таблицы отбрасываются при закрытии соединения, но поскольку постоянные соединения не закрываются, временные таблицы не так временный. Если вы явно не удаляете временные таблицы, когда вы, эта таблица уже существует для нового клиента, повторно использующего такой же связь. Такая же проблема возникает при настройке сеанса переменные. (См. Комментарии ниже 19 ноября 2004 года и 07 августа 2006 года)

  • Если PHP и MySQL находятся на одном сервере или в локальной сети, время соединения может быть незначительным, и в этом случае нет преимущества к постоянным соединениям.

  • Apache не работает с постоянными подключениями. Когда он получает запрос от нового клиента, вместо того, чтобы использовать один из доступным детям, у которых уже есть постоянная связь, имеет тенденцию порождать нового ребенка, который должен затем открыть новую базу данных подключение. Это вызывает избыточные процессы, которые просто спят, тратить ресурсы и вызывать ошибки, когда вы достигаете максимума соединения, плюс он побеждает любое преимущество постоянных соединений. (См. Комментарии ниже, 03-Feb-2004, и сноска на http://devzone.zend.com/node/view/id/686#fn1)

Ответ 2

Вы также должны посмотреть mysqli и pdo. mysql-extension довольно старый и не поддерживает подготовленные операторы mysqli. И pdo поддерживает несколько баз данных без изменения запросов.

Ответ 3

Вы должны использовать mysql_pconnect на сильно загруженных сайтах, поэтому соединение будет повторно использоваться. Это может повысить скорость до двух раз...

Но, если вы не ожидаете высоких нагрузок; использовать нормальное соединение по причинам, о которых говорил Светлозар Ангель.

Ответ 4

Пожалуйста, больше не отвечайте на этот вопрос, его попросили и ответили в другом месте. См. Ссылки выше.