В настоящее время я работаю над легкой инфраструктурой php для использования с каким-то высоким аяксом запроса для моего сайта и столкнулся с интересной проблемой, которая полностью меня превзошла. Ajax предназначен для серии уведомлений, поэтому javascript отправляет запрос ajax для новой информации каждые 30 секунд. Этот ajax активен на каждой странице всего сайта, поэтому я понимаю его множество запросов, так как несколько сотен пользователей просматривают сайт в любой момент, многие из них открываются несколькими окнами.
Синтаксис мудрый, все идеально. Проблема в том, что когда я активировал ajax для моего сообщества, в базе данных MySQL создается команда из 30-40 SLEEP. Все из них, похоже, игнорируют установленный таймаут 10 секунд. В результате это влияет на производительность всего сайта.
Я понимаю, что оставшиеся команды сна являются результатом соединения, которое не было закрыто. Я использую объектно-ориентированный класс MySQLi и расширил его несколькими своими функциями. Все по учебнику и дважды проверено на документацию, и я убедился, что каждая маленькая часть класса MySQLi закрыта и выпущена.
Если у кого-то есть какая-либо мудрость или опыт такого эффекта, я был бы очень благодарен за любой совет.
Пробовали ли вы подход push и ваш текущий подход к подбору / опросу? Взгляните на комету:
Однако есть некоторые недостатки, главным из которых является поддержание открытого соединения, а некоторые браузеры ограничивают количество подключений, которые вы можете поддерживать. Следующая статья рассказывает о плюсах и минусах использования кометы и предлагает использовать метод гибридного опроса:
Вот вопрос stackoverflow, который также говорит о кометах: