Задать вопрос
@oenomaus2013

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

интересует больше бэкенд сторона
например:
1) конвертация видео в другой формат
2) сжатие большого изображения
3) импорт товаров в бд с внешнего api
4) экспорт товаров из бд в excel файл

предполагаю алгоритм зависит от вида задачи..

случай 3: если это импорт..то нужно вероятно подсчитать количество строк/рядов в файле,например там около 300 строк,
в бд добавляем по 100 строк
количество итераций = 300/100=3
всего 3 итерации: 1-33%, 2-66%, 3-100%

случай 2 "сжатие большого изображения"..
как узнать здесь количество итераций?
или в момент запуска воркера,увеличивать счетчик прогресса каждую секунду и
записывать/обнволять в бд по id_task значение в поле "progress" , а когда закончит работу обновить значение на 100%

общий алгоритм возможно должен быть похож на это:
function progress(int $total)
{
    echo 'Starting task' . PHP_EOL;
    for ($i = 1; $i <= $total; $i++) {
        $progress = 100 * $i / $total;
        echo $i . '-' . $progress . '%' . PHP_EOL;
        // some heavy task
        sleep(1);
    }
    $progress = 100;
    echo '$progress: ' . $progress . '%' . PHP_EOL;
    echo 'Task completed' . PHP_EOL;
}

progress(10);
  • Вопрос задан
  • 76 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
18 дек. 2024, в 15:00
300 руб./в час
18 дек. 2024, в 14:53
30000 руб./за проект
18 дек. 2024, в 14:45
25000 руб./за проект