ERR_INSUFFICIENT_RESOURCES ajax-код для ЧАСОВ РЕАЛЬНОГО ВРЕМЕНИ

#javascript #jquery #ajax

#javascript #jquery #ajax

Вопрос:

Я создал часы реального времени, которые обновляются каждую секунду. Когда я запускаю его локально, я не вижу ошибок. Однако, когда я загрузил его на свой веб-хост, я видел много сообщений об ошибках в консоли при каждом запуске AJAX-кода.

Я думаю, именно по этой причине веб-хост приостановил работу моего сайта, сообщив, что мой сайт выполнил слишком много запросов.

Вот мой код:

 $(document).ready(function() {  
  setInterval(function() {
    $('#time').load('timewithdate.php')
  }, 1000);

  setInterval(function(){
    $('#time2').load('time.php')
   }, 1000);
})
 

Комментарии:

1. Что, если я удалю второй запрос времени? Будет ли ошибка?

2. Да, но это займет больше времени. Вам не следует повторно опрашивать сервер отчасти потому, что в конечном итоге вы столкнетесь с одной и той же проблемой, а отчасти потому, что более эффективно создать таймер обратного отсчета на стороне клиента без необходимости тратить ресурсы сервера.

Ответ №1:

Я не уверен, какой ответ вы ищете. Ваш код — это определенный способ убить сервер: он выполняет 2 вызова на сервер каждую секунду для каждого клиента (подробнее о DDOS). Нет необходимости вызывать сервер, просто используйте javascript, чтобы получить текущее время и отформатировать его так, как вы хотите. У вас может быть что-то вроде этого:

 $(document).ready(function() {  
  setInterval(function() {
    let curTime = new Date();
    let date = curTime.toLocaleDateString();
    let time = curTime.toLocaleTimeString();
    $('#time').text(date   " "   time);
    $('#time2').text(time);
  }, 1000);
})
 

Ответ №2:

Ошибка заключается в том, что вы фактически подвергли DDOS-атаке свой собственный сервер с 2 запросами каждую секунду * количество одновременных клиентов. Я бы настоятельно рекомендовал вам удалить эти AJAX-запросы и выполнить обратный отсчет на стороне клиента.

Если вы пытаетесь синхронизировать часы со временем сервера, получите время с сервера при загрузке страницы, а затем добавьте к нему секунды на стороне клиента. Не используйте AJAX для этого и не используйте AJAX-опрос в будущем. Это анти-шаблон.

Комментарии:

1. выполните обратный отсчет на стороне сервера -> Конечно, вы имели в виду «на стороне клиента»

2. Хорошо, как бы мне выполнить это на стороне сервера, я использую PHP для этого. Я хочу автоматически обновлять время каждую секунду. Спасибо.

3. Вы этого не делаете; в этом весь смысл. Сделайте это на клиенте. Если вам абсолютно необходимо синхронизировать время клиента и сервера, изучите websockets, но это будет смена парадигмы с точки зрения того, как должна быть структурирована логика вашего сайта.