Например, существует веб-страница chat.php, которая выполняет запрос ajax для обновления чатов каждые 700 миллисекунд.
Эти запросы ajax выполняются с использованием метода setInterval javascript.
При одновременном доступе к этой странице двумя или более пользователями страница не загружается и показывает ошибку, а иногда на странице отображается ошибка 429 слишком большого числа запросов.
Таким образом, одновременно у пользователя может возникнуть максимум 4 запросаконец и это также, если сценарии выполняются одновременно.
Хостинг предоставляет мне 10 процессов ограниченного ввода по умолчанию.
Пожалуйста, найдите время, чтобы прочитать (ваше собственное) кавычки.
Вы заявляете, что вы AJAX-сервер каждые 700 мс, и вы делаете это с помощью setInterval.Существует максимум 4 запроса на пользователя и 10 в общей сложности.Если есть 2 или более посетителя, все идет наперекосяк.
Я думаю, что здесь могут возникать проблемы из-за нескольких вещей:
Вы достигли лимита в 10 запросов из-за нескольких пользователей.
Когда 2 пользователя нажимают на 4 запроса на 8, если что-то еще делает запросы на сервере, вы очень быстро достигаете максимума 10. С 3 пользователями с 4 запросами ваш на 12, который в соответствии с вашим вопросом достигает вашегопредел.
Возможно, вы используете DOS для своих собственных серверов.
Использование setInterval
для выполнения запросов AJAX - плохо . очень плохо .Проблема заключается в том, что если вы запрашиваете свой сервер каждые 700 мс, а серверу требуется более 700 мс для ответа, вы складываете запросы.В конечном итоге вы достигнете любого ограничения с одним пользователем.(хотя в некоторых случаях браузер может защитить вас).
Как исправить
Я думаю, 10 подключений (если на самом деле это 10 подключений,что мне непонятно) очень низко.Однако вы должны рефакторинг вашего кода, чтобы избежать использования setInterval
.Вы должны использовать что-то вроде Promise
, чтобы отслеживать, когда запросы заканчиваются, прежде чем планировать новый, чтобы предотвратить накопление стеков запросов.Имейте в виду, что вы никогда не должны использовать setInterval
, если у вас нет веских причин для этого.Почти всегда лучше использовать более интеллектуальное планирование.
Возможно, вы захотите повысить эффективность этих запросов, можете ли вы объединить вызов для проверки сообщений и уведомлений?