Рейтинг:1

Как дважды показать индикатор выполнения для одного запроса (с помощью Batch API)

флаг ng
863

У меня есть пользовательская форма, которая обрабатывает два разных процесса после отправки, скажем

  • Процесс 1: удаление всех узлов статьи
  • Процесс 2: импорт узлов статей из csv.

Проблема в том, что у каждого процесса должен быть свой индикатор выполнения. Итак, он должен выглядеть так:

  • Форма отправлена
  • Индикатор выполнения для запуска процесса 1 (0%)
  • Индикатор выполнения для завершения процесса 1 (100%)
  • Индикатор выполнения для запуска процесса 2 (0%)
  • Индикатор выполнения для завершения процесса 2 (100%)
  • Перенаправить на форму

Если я добавлю batch_set() дважды в обработчике отправки, оба процесса выполняются, но индикатор выполнения появляется только один раз.

// Создадим два разных пакета.

общедоступная статическая функция getBatch1() {
    $batch_builder = новый BatchBuilder();
    $batch_builder->setTitle('Процесс 1')
    $batch_builder->добавитьОперацию(
        [я:: класс, 'processCallback1'],
      );
    вернуть $batch_builder->toArray();
  }

общедоступная статическая функция getBatch2() {
    $batch_builder = новый BatchBuilder();
    $batch_builder->setTitle('Процесс 2')
    $batch_builder->добавитьОперацию(
        [я:: класс, 'processCallback2'],
      );
    вернуть $batch_builder->toArray();
  }
// Пользовательский обработчик отправки формы.
публичная функция submitForm() {
 batch_set(MyBatchClass::getBatch1());
 batch_set(MyBatchClass::getBatch2());
}

На самом деле это выглядит так:

  • Форма отправлена
  • Индикатор выполнения для запуска процесса 1 (0%)
  • Индикатор выполнения для завершения процесса 1 (100%) <- процесс 2 также завершен в фоновом режиме
  • Перенаправить на форму

Как я могу перезапустить индикатор выполнения, когда начинается второй процесс?

hotwebmatter avatar
флаг nr
Попробуйте реализовать каждый процесс Batch API в отдельном классе.
флаг gb
@863, не могли бы вы поделиться кодом для пакетных обратных вызовов processCallback1, processCallback2?

Ответить или комментировать

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