Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

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


Recommended Posts

Добрый день опишу логику,
пишу скрипт выгрузки товаров в вк, скрипт долгий может выполнятся овер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 написано все в одном контроллере

 

Edited by EliasKoch
Link to post
Share on other sites

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

 

Link to post
Share on other sites

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

Link to post
Share on other sites

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

session_write_close();

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

 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Similar Content

    • By ArtemPitov
      Важно: адаптация платная
       
      Дополнение добавляет бесконечную погрузку товаров на основные страницы товаров. 
      Особенностью дополнения является смена url без перезагрузки страницы, что в свою очередь позволяет сохранить страницу товара на которой находится пользователь даже после обновления страницы вручную. Модуль тестировал на дефолтном шаблоне, адаптация платная
       
      Возможности 
      Динамическая смена URL (как Вконтакте)  Автоматическая загрузка товаров (как лента Вконтакте) Переход к последнему товару при возврате   
      Демо каталог: https://apl.pitov.pro/desktops/mac/ модуль включен только  на этой странице
      Демо админка: у модуля нет админки
       
      Версия модуля 2.х
      Полностью переписанная новая версия модуль, теперь модуль написан на чистом JavaScript, без использования jQuery и любых других зависимостей
       
      Функционал модуля:
      Бесконечная загрузка товаров со сменной URL Корректный возврат со страницы товара в каталог, по нажатию на кнопку "назад" в браузере  Замена тегов title, meta Замена URL при скроллинге вверх/вниз, происходит подмен URL, как будто пользователь находится на конкретной странице (находится в бета тестировании) Добавления кнопки "Показать еще" при достижении лимита автозагрузки товаров   Для разработчиков. Добавлены события на document: iscroll:action, iscroll:rendering, iscroll:rendering:after который дают возможность отслеживать добавления новых товаров   
      В версии 2.1 будет добавлено:
      Настройки модуля через админку  Визуальный выбор селекторов для настройки модуля  
      Демо каталог: https://iscroll.pitov.pro/index.php?route=product/category&path=20
       
      Лицензия: 
      1.       Дополнение продается по принципу “AS IS”
      2.       Одна лицензия распространяется только на один домен
    • By ArtemPitov
      750 10
      Скачать/Купить дополнение


      Бесконечная загрузка товаров | Infinite Scroll
      Важно: адаптация платная
       
      Дополнение добавляет бесконечную погрузку товаров на основные страницы товаров. 
      Особенностью дополнения является смена url без перезагрузки страницы, что в свою очередь позволяет сохранить страницу товара на которой находится пользователь даже после обновления страницы вручную. Модуль тестировал на дефолтном шаблоне, адаптация платная
       
      Возможности 
      Динамическая смена URL (как Вконтакте)  Автоматическая загрузка товаров (как лента Вконтакте) Переход к последнему товару при возврате   
      Демо каталог: https://apl.pitov.pro/desktops/mac/ модуль включен только  на этой странице
      Демо админка: у модуля нет админки
       
      Версия модуля 2.х
      Полностью переписанная новая версия модуль, теперь модуль написан на чистом JavaScript, без использования jQuery и любых других зависимостей
       
      Функционал модуля:
      Бесконечная загрузка товаров со сменной URL Корректный возврат со страницы товара в каталог, по нажатию на кнопку "назад" в браузере  Замена тегов title, meta Замена URL при скроллинге вверх/вниз, происходит подмен URL, как будто пользователь находится на конкретной странице (находится в бета тестировании) Добавления кнопки "Показать еще" при достижении лимита автозагрузки товаров   Для разработчиков. Добавлены события на document: iscroll:action, iscroll:rendering, iscroll:rendering:after который дают возможность отслеживать добавления новых товаров   
      В версии 2.1 будет добавлено:
      Настройки модуля через админку  Визуальный выбор селекторов для настройки модуля  
      Демо каталог: https://iscroll.pitov.pro/index.php?route=product/category&path=20
       
      Лицензия: 
      1.       Дополнение продается по принципу “AS IS”
      2.       Одна лицензия распространяется только на один домен
      Добавил ArtemPitov Добавлено 13.02.2019 Категория Прочее Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 3.0
      2.3.0.2.4
      2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика Нет Старая цена 0  
    • By kirians
      Скачать/Купить дополнение Ajax Live Search for Opencart (Поиск вживую)
      Вы задумывались над тем, что удобный поиск повышает конверсию Вашего магазина на 25-35%?
      Чем быстрей пользователь найдет то, что ищет, тем больше вероятность, что он останется на сайте и купит товар!
       

       
          Увеличивайте конверсии на сайте с помощью умного и быстрого поиска:
      Используйте подсказки, чтобы сделать поиск более точным Выберите поля, по которым хотите вести поиск (имя, описание, SKU, ISBN, MODEL, UPC, JAN, Meta tag, Attribute) Посмотрите историю поиска, для дальнейшей статистики и отслеживания переходов Настраиваете выводимые результаты поиска (заголовки, категории или отключите цену из выводимых параметров) С каждым новым запросом Ваш поиск будет становиться более точным Укажите количество выводимых товаров по запросу Укажите правила для отображения заголовков, картинок товара и показывайте или прячьте цену товара Подходит к любой теме используемой в вашем магазине Адаптивный на мобильных устройствах  
      Добавил kirians Добавлено 03.11.2020 Категория Поиск Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1
      1.5.3.1 ocStore 3.0
      2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х Обращение к серверу разработчика Нет Старая цена 2699  
    • By zomo
      Часто администраторы магазинов сталкиваются с тем, что забывают обновить страницу с последними заказами тем самым теряя время и покупателей!
      Данный модуль исправляет эту ситуацию, теперь, чтобы увидеть последние актуальные заказы не нужно каждый раз обновлять страницу или судорожно заходить в почтовый ящик, модуль сделает это за вас.
       
      Период обновление блока (актуализации последних заказов) - раз в 10 секунд.
       
      Установка
      Перейдите в раздел Дополнения -> Менеджер дополнений; Загрузите файл ajax_recent.ocmod для своей версии;  
      Внимание! Модуль заменяет стандартный модуль вывода последних заказов в админке!
      В случае если установлены модули цветных статусов заказов либо подобных адаптация возможна, но на платной основе.
    • By zomo
      750.00 руб
      Скачать/Купить дополнение


      Ajax Recent - обновление списка заказов без перезагрузки
      Часто администраторы магазинов сталкиваются с тем, что забывают обновить страницу с последними заказами тем самым теряя время и покупателей!
      Данный модуль исправляет эту ситуацию, теперь, чтобы увидеть последние актуальные заказы не нужно каждый раз обновлять страницу или судорожно заходить в почтовый ящик, модуль сделает это за вас.
       
      Период обновление блока (актуализации последних заказов) - раз в 10 секунд.
       
      Установка
      Перейдите в раздел Дополнения -> Менеджер дополнений; Загрузите файл ajax_recent.ocmod для своей версии;  
      Внимание! Модуль заменяет стандартный модуль вывода последних заказов в админке!
      В случае если установлены модули цветных статусов заказов либо подобных адаптация возможна, но на платной основе.
      Добавил zomo Добавлено 28.01.2020 Категория Прочее Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 2.3 ocStore 2.3 OpenCart.Pro, ocShop Не проверялось Обращение к серверу разработчика Нет Старая цена 500  
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.