Как избежать ERR_INSUFFICIENT_RESOURCES при вызовах AJAX ⇐ Javascript
-
Гость
Как избежать ERR_INSUFFICIENT_RESOURCES при вызовах AJAX
Я давно не пробовал работать с JavaScript, так что, пожалуйста, будьте терпеливы. Я работаю над приложением, которое предлагает отчеты по данным учащихся. Серверная часть — PHP.
База данных, которую мы используем для этих отчетов, время от времени должна обновляться из центрального хранилища. Обновление происходит по усмотрению конечного пользователя и не автоматизировано по разным причинам, о которых здесь не стоит вдаваться.
Обновление занимает не менее 10 минут. Поэтому браузеру было бы больно сидеть и загружаться такое количество времени, не получая обратной связи от пользователя. Я решил, что лучший способ предоставить пользователю обратную связь — это использовать простой скрипт JQuery, который будет держать пользователя в курсе хода обновления.
Вот сценарий:
var n = 0; функция приращения() { н++; вернуть н; } $(документ).ready(функция() { $("#popme").click(function(event) { п = 0; $.getJSON('/path/to/json_pids', function(data) { вар numRecords = data.length; $("#pop-result").html('' + numRecords + 'записи
'); $.each(данные, функция(строка) { $.ajax({ URL: '/path/to/json_student_info/' + это, успех: функция() { приращение(); $("#pop-result").html('
' + n + ' / ' + numRecords + ' записи
'); } }); }); }); }); });
Что происходит в этом скрипте:
Существует div с идентификатором pop-result, который обновляется. /path/to/json_pids возвращает массив JSON с соответствующими идентификаторами учащихся.
Оттуда скрипт проходит по каждой записи и вызывает /path/to/json_student_info/{student_id}, но не требует ничего взамен. Этот второй URL-адрес вызывает серверный сценарий, который создает/обновляет запись об этом студенте в базе данных отчетов.
В случае успеха сценарий должен увеличить число, отображаемое в pop-result, чтобы пользователь мог видеть ход выполнения сценария.
Результат и мой вопрос
Результат немного запутанный. Консоль JS показывает целую длинную строку ошибок ERR_INSUFFICIENT_RESOURCES. Сценарий никогда не проходит через все записи. Он может достичь ~4000 из ~11000 записей и оттуда просто умереть.
У меня такое ощущение, что я совершаю ошибку новичка. Последние пару дней я искал подобные сценарии, но не нашел ничего, что помогло бы. Лучшая идея, которую я могу найти, — это разбить данные на фрагменты, но я все равно получаю ту же ошибку и поведение. Есть ли альтернативный/лучший способ выполнить то, что я пытаюсь сделать, или способ сделать этот скрипт менее интенсивным в браузере?
Я давно не пробовал работать с JavaScript, так что, пожалуйста, будьте терпеливы. Я работаю над приложением, которое предлагает отчеты по данным учащихся. Серверная часть — PHP.
База данных, которую мы используем для этих отчетов, время от времени должна обновляться из центрального хранилища. Обновление происходит по усмотрению конечного пользователя и не автоматизировано по разным причинам, о которых здесь не стоит вдаваться.
Обновление занимает не менее 10 минут. Поэтому браузеру было бы больно сидеть и загружаться такое количество времени, не получая обратной связи от пользователя. Я решил, что лучший способ предоставить пользователю обратную связь — это использовать простой скрипт JQuery, который будет держать пользователя в курсе хода обновления.
Вот сценарий:
var n = 0; функция приращения() { н++; вернуть н; } $(документ).ready(функция() { $("#popme").click(function(event) { п = 0; $.getJSON('/path/to/json_pids', function(data) { вар numRecords = data.length; $("#pop-result").html('' + numRecords + 'записи
'); $.each(данные, функция(строка) { $.ajax({ URL: '/path/to/json_student_info/' + это, успех: функция() { приращение(); $("#pop-result").html('
' + n + ' / ' + numRecords + ' записи
'); } }); }); }); }); });
Что происходит в этом скрипте:
Существует div с идентификатором pop-result, который обновляется. /path/to/json_pids возвращает массив JSON с соответствующими идентификаторами учащихся.
Оттуда скрипт проходит по каждой записи и вызывает /path/to/json_student_info/{student_id}, но не требует ничего взамен. Этот второй URL-адрес вызывает серверный сценарий, который создает/обновляет запись об этом студенте в базе данных отчетов.
В случае успеха сценарий должен увеличить число, отображаемое в pop-result, чтобы пользователь мог видеть ход выполнения сценария.
Результат и мой вопрос
Результат немного запутанный. Консоль JS показывает целую длинную строку ошибок ERR_INSUFFICIENT_RESOURCES. Сценарий никогда не проходит через все записи. Он может достичь ~4000 из ~11000 записей и оттуда просто умереть.
У меня такое ощущение, что я совершаю ошибку новичка. Последние пару дней я искал подобные сценарии, но не нашел ничего, что помогло бы. Лучшая идея, которую я могу найти, — это разбить данные на фрагменты, но я все равно получаю ту же ошибку и поведение. Есть ли альтернативный/лучший способ выполнить то, что я пытаюсь сделать, или способ сделать этот скрипт менее интенсивным в браузере?
Мобильная версия