2013-06-01 2 views
0

Я впервые опробовал длительный опрос.Длинный опрос PHP. Поддерживать соединение с БД или нет?

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

Я думаю, производительность и/сервер базы данных загрузки/соединения:

Что хуже для сервера: Многие GET-запросов (AJAX), или многие открытия/закрытия соединения DB?

Было бы лучше использовать длинный опрос, но закрыть и снова открыть соединение БД в каждом раунде цикла while (чтобы освободить ограниченное количество подключений)?

ответ

0

Это менее тривиально, чем кажется: что начинается с простой альтернативы «должен ли я или нет», она быстро возрастает по сложности с масштабированием до большего количества серверов.

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

  • Выполнить один экземпляр простой прокси-скрипт, который опрашивает DB (На общем хостинге мы начинаем это с задания cron, которое запускает экземпляр только, если никто не работает, поэтому мы легко переживаем перезагрузки)
  • Попросите этот прокси-сервер перевести дорогостоящий опрос DB в более дешевый опрос: SysV SHM и флаговые файлы в файловой системе работают нормально. Прокси-сервер должен поддерживать открытое одно соединение с БД.
  • У вас есть потенциальная вероятность того, что многие длинные люди проведут проверку прокси-флага.

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

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