2011-12-23 3 views
0

Я создаю приложение (MySQL/PHP), которое (со временем) может использовать соединения с удаленными (и, возможно, медленными) серверами MySQL. Приложение использует AJAX whispers, которые часто открывают подключения к БД. Я сделал некоторую оптимизацию на стороне клиента, но никогда не хватало смелости использовать постоянные соединения, что может быть хорошей идеей здесь.Что еще нужно учитывать при использовании mysql_pconnect в вызовах AJAX

Я беспокоюсь о незанятых соединениях mysql, которые могут превышать лимит сервера, в результате чего необходимо перезапустить сервер. Поэтому я планирую использовать mysql.connection_timeout до 15 с, что приведет к увольнению каждого постоянного постоянного соединения после лимита? Или он будет блокировать системные ресурсы до конца временного процесса сервера?

Я не буду использовать транзакции в шепотах, и каждый замок должен быть освобожден после того, как соединение будет закрыто, верно?

Есть ли какие-либо другие проблемы с постоянным подключением, о которых я должен знать? (Я уже прочитал the documentation.)

ответ

2

Обычно вы не получаете ничего, используя постоянные связи с MySQL. Протокол его подключения уже в целом довольно быстрый. То, что вы теряете, является гарантией «чистой» операционной среды при использовании регулярных непостоянных соединений.

Если какой-либо из ваших скриптов умирает по какой-либо причине в середине транзакции или оставляет заданные на стороне сервера переменные, постоянное соединение означает, что транзакция с половиной выполненной транзакции по-прежнему активна, когда соединение снова подключается некоторыми ДРУГИМИ скрипт.

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

Это означает, что вы можете ограничить количество подключений, которые PHP будет поддерживать от вашего имени с помощью настройки mysql.max_persistent. Независимо от того, сколько соединений вы пытаетесь сделать из своих сценариев, PHP никогда не превысит этого предела, поэтому вы можете установить его ниже, чем собственный параметр от MySQL.

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

  • Нет связанных вопросов^_^