Pull to refresh

Comments 10

я, конечно, не работал с битриксом, но если я все правильно понял ИМ требуется (25 * 60) минут / 440 = 3.4 секунды на то чтобы отобразить 50 товаров?
Хотелось бы спросить причем тут ajax?

п.с. Почему бы не поступить еще проще, написать таск который сформирует yml для яндекса и по завершению пнет яндекс что бы он сходил и забрал этот файл?
Уточню немного. Задача из статьи решается с помощью PHP скрипта, запускаемого на сервере по расписанию — cron task.
Такая задача в кроне висит, заказчик хотел дополнительно запускать ручками.

Что касается ajax, тут да, если задуматься, то получается, что в данном примере запросы идут не совсем асинхронно. После завершения одного запроса, этим же скриптом запускается другой. И так пока не обработаем все, что есть.

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

мораль — делаешь что-то на битриксе — не используй его
Ничего не понял, да и не работал с Битриком, но 40 секунд без информирования пользователя о состоянии тоже много. Можно же поступить так: отправить запрос на формирование данных на сервер, сервер тут же вернёт идентификатор запроса и начнёт обработку, с клиента периодически (раз в 5-10 секунд) по этому идентификатору проверять статус обработки и информировать пользователя. когда обработка закончится, в ответ на запрос придёт результат. Кажется это называется REST API.
Термин AJAX уже давно не употребляется т.к. это давно стандартная технология по-умолчанию в вебе, а статья видимо лежала в закромах лет 10.
Такие задачи обычно выполняются регулярно, по крону. Пользователь (вернее, администратор ИМ) вообще информируется только в случае проблем с выполнением задачи. У нас, например, задачи по выгрузке в Яндекс.Маркет и ещё в несколько мест выполняются раз в 1-3 часа (периодичность зависит от задачи). Пользователь задолбается читать, что задача отработала штатно. Наоборот, ему интересно будет сообщение, что задача не выполнилась.

Никакой аякс, разумеется, не нужен. В Битриксе есть задачи экспорта, можно написать свой скрипт, который будет делать вообще что угодно и повесить его на крон.
Сейчас проблема оповещения пользователя о состоянии обработки решается путем возвращения обработанного количества товаров на каждой итерации. В принципе если погнаться за лоском, можно и прогресс бар прикрутить.

REST в предлагаемой вариации не прокатит. В данном случаи я не могу запустить скрипт, который бы мог крутиться более 30 секунд — time_limit на сервере, администратор которого менять не дал. А искусственно сбрасывать значение времени выполнения на каждой внутренней итерации, через set_time_limit() — не совсем хорошо, на мой взгляд.

Хотя признаю, что скрипт который работает по крону сбрасывает счетчик времени на каждой итерации.
Ведь так велик соблазн загрузить основные стили, js-скрипты, картинки и шрифты и прочее только один раз, а дальше с помощью AJAX подгружать только необходимый контент.
Мрачно подозреваю, что все они и без AJAX попали бы в кэш браузера и оттого не подгружались бы из Сети в дальнейшем.
Я бы не стал полагаться на кеш браузера. Попадет — хорошо, а не попадет — так подстрахуемся.
Sign up to leave a comment.

Articles

Change theme settings