Перейти к содержанию
EliasKoch

Несколько ajax запросов - формирование очереди

Рекомендуемые сообщения

Добрый день опишу логику,
пишу скрипт выгрузки товаров в вк, скрипт долгий может выполнятся овер9999 секунд не суть в настройках скрпита прописал  

ini_set('max_execution_time', 0);
ignore_user_abort(true);
set_time_limit(0);

Для того чтобы игнорировать 504 ошибку так как хостер не дает возможность изменить время ожидания, в общем не суть. 

смысл скрипта вкратце 

1) определяю количество категорий которое надо выгружать.
2) это количество я пишу в кеш.

3) далее циклом прохожу по категориям вытаскиваю товары, и добавляю их в вк)
4) после каждой итерации я пишу в кеш сколько у меня категорий ушло в вк.


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

и так суть.


1) я ajax'ом вызываю метод который отвечает за выгрузку  в вк

2) я одновременно с этим же вызовом запускаю процес долбдения (main_timer)

    function add_category() {

            var data= $($('#form-category [name*="selected"]:checked').parents('tr').find('[name*="product"]')).serialize();
            $.ajax({
                type:'post',
                dataType: "json",
                url:'index.php?route=common/vk_integration/category_add&token=<?= $token?>',
                data:data,
            });
            getProgress();
            $('#progres_modal').modal('show');
             main_timer = setInterval(progress();', 2000);
        }

сам таймер

function progress() {
            $.ajax({
                type:'post',
                url:'index.php?route=common/vk_integration/progress&token=<?= $token?>',
                dataType: "json",
                success: function (data) {
                    console.log(data);
                    if(data.success=='1'){
                        $('#progres_modal').modal('hide');
                        clearTimeout(main_timer);
                    }else{
                        $('#curent_result').text(data.current_item);
                        $('#count_result').text(data.count);
                    }
                }
            });
        }


Чего я ожидаю 

у скрипта экспорта вк длительного выполнения (пусть себе крутится)
а у таймера - Запрос - ответ и так далее .

Но на деле я получаю скрипт экспорта вк pennding и все долбления pennding но только скрипт закончит выполнение (200) все запросы будут 200
как будто все запросы попадают в очередь а мне  надо что то вроде  распараллеливания

ps написано все в одном контроллере

 

Изменено пользователем EliasKoch

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Разделите получения списка категорий постранично. ( Если категорий много )
2. Разделите получение товаров в категории постранично.
3. Для Ajax используй callback, тогда не будет проблем с долгим ожиданием.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Был вариант такой но тогда выгрузка будет проходить намного больше, чем  ту логику которую  я продумал я

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашел решение для своей проблемы

session_write_close();

в первом скрипте

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От DM8985
      Нужно вывести с настроек опцию "Заказ при нехватке на складе" в шапку админ панели и сделать её ajax, чтобы при клике сразу сохранялась. Предложения в личку.
    • От denis92
      1 000.00 руб
      Скачать/Купить дополнение


      DE Filter(ajax + show more)
      Фильтр от Digital Elephant - это современное и надежное решение для быстрой фильтрации товаров, благодаря продуманной оптимизации запросов по категориям, производителям, атрибутам, опциям и ocfilter. Также присутствует дополнительный функционал, такой как кнопка show more, кеширование, формирование посадочных страниц и многое другое. 

      DEMO FILTER
      Demo

      DEMO ADMIN
      Demo используйте username/password:demo/demo

      Доступна тестовая версия по запросу в ЛС

      Перечень функционала:
      Фильтрация товаров по категориям, производителям, опциям, атрибутам и встроенным фильтрам опенкарта Ajax обновление при выборе сортировки и лимита Ajax обновление пагинации и отображаемого количества товаров на странице Ajax кнопка "показать еще" Кеширование(для магазинов с большим количеством товаров) Развертывание и свертывание элементов фильтра с сохранением состояния Выбор типа отображаемой формы опций фильтра(checkbox, radio, checkbox image, radio image, select) Формирование посадочных страниц на основе metakeywords Другие настройки(выбор прелоадера, отображение кол-во товаров с привязкой к опциям и т.д.)  
      Внимание!
      * Некоторые файлы модуля закодированы
      * Скачивая модуль, вы даете согласие на разрешения сбора информации о вашем домене и версии опенкарта
      * Не тестировался с ocStore (тестовую версию можете запросить в ЛК)
      * Покупая модуль вы даете согласие, что протестировали тестовую версию модуля и у вас не возникло претензий или проблем

      Бесплатная консультация 24/7
      Платная техподдержка

      Установка и настройка
      YOUTUBE

      * Документация установки и настройки модуля прилагается в скачанном архиве.
      * Не забывайте после настройки модуля чистить папку system/storage/cache и обновлять модификаторы
      Добавил denis92 Добавлено 08.11.2018 Категория Модули Системные требования модуль для php - curl Сайт разработчика digital-elephant.com.ua Старая цена 1885 Метод активации По запросу на почту Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 3.0
      2.3
      2.2
      2.1 OpenCart.Pro, ocShop  
    • От denis92
      Фильтр от Digital Elephant - это современное и надежное решение для быстрой фильтрации товаров, благодаря продуманной оптимизации запросов по категориям, производителям, атрибутам, опциям и ocfilter. Также присутствует дополнительный функционал, такой как кнопка show more, кеширование, формирование посадочных страниц и многое другое. 

      DEMO FILTER
      Demo

      DEMO ADMIN
      Demo используйте username/password:demo/demo

      Доступна тестовая версия по запросу в ЛС

      Перечень функционала:
      Фильтрация товаров по категориям, производителям, опциям, атрибутам и встроенным фильтрам опенкарта Ajax обновление при выборе сортировки и лимита Ajax обновление пагинации и отображаемого количества товаров на странице Ajax кнопка "показать еще" Кеширование(для магазинов с большим количеством товаров) Развертывание и свертывание элементов фильтра с сохранением состояния Выбор типа отображаемой формы опций фильтра(checkbox, radio, checkbox image, radio image, select) Формирование посадочных страниц на основе metakeywords Другие настройки(выбор прелоадера, отображение кол-во товаров с привязкой к опциям и т.д.)  
      Внимание!
      * Некоторые файлы модуля закодированы
      * Скачивая модуль, вы даете согласие на разрешения сбора информации о вашем домене и версии опенкарта
      * Не тестировался с ocStore (тестовую версию можете запросить в ЛК)
      * Покупая модуль вы даете согласие, что протестировали тестовую версию модуля и у вас не возникло претензий или проблем

      Бесплатная консультация 24/7
      Платная техподдержка

      Установка и настройка
      YOUTUBE

      * Документация установки и настройки модуля прилагается в скачанном архиве.
      * Не забывайте после настройки модуля чистить папку system/storage/cache и обновлять модификаторы
    • От Aky
      Как передать POST параметр через ajax в файл controller модуля OpenCart ?
       
      Есть модуль "latest"  Файл контроллера latest.php, нужно передать туда параметр width через Ajax/Jquery  
       
      Как обратится к этому файлу? 
       
      Как работать с Ajax знаю, как параметры передать знаю, как принять знаю, но как обратится к нужному файлу в OpenCart?
       
      При попытках обращения по "url:' скрипт выдает ошибку  "404 (not found)"
       
      Пробовал вот так:
      url: 'index.php?route=extension/module/latest',  url: 'index.php?route=module/latest',  url: '/catalog/controller/extension/module/latest',   
      Если перейти на прямую по ссылки: "/catalog/controller/extension/module/latest.php"  выдает ошибку HTTP ERROR 500
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.