У меня есть пользовательская форма, которая обрабатывает два разных процесса после отправки, скажем
- Процесс 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 также завершен в фоновом режиме
- Перенаправить на форму
Как я могу перезапустить индикатор выполнения, когда начинается второй процесс?