2009-08-27 3 views
10

Я новичок PHP, работающий с некоторыми скриптами, чтобы отображать некоторые новостные статьи из базы данных и хотел узнать несколько вещей.Что лучше: mysql_connect или mysql_pconnect

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

Дубликат http://stackoverflow.com/questions/247807/mysqlconnect-vs-mysqlpconnect – Oskar

ответ

19

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

Here некоторые хорошие моменты о НЕ ИСПОЛЬЗУЯ постоянное соединение в веб-приложениях

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

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

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

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

+1

Причина, по которой вы обычно используете mysql_pconnect, именно в том случае, когда вы создаете веб-приложение, поэтому вам не нужно выполнять дорогостоящую операцию подключения к базе данных для каждой сделанной страницы. – nos

+0

и почему мое соединение должно оставаться открытым, пока я читаю мой гороскоп для изучения, это может занять 1 час после того, как я попрошу другую страницу ?! –

+0

Спасибо, ребята. Это делает меня намного понятнее. – Kwame

1

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

-1

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

+4

Это не ответ, а комментарий. –

+2

Спасибо за отметку тогда :) –

+2

Я отметил это, потому что это было единственно правильное дело. –

1

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

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

Смежные вопросы