В Laravel я выполняю работу в своем коде, как это
Artisan::queue('mediaserver:process-queue', ['index' => $indexName]);
Одну и ту же работу планируется выполнять в фоновом режиме каждый час. Иногда я хочу вызвать его через мой пользовательский интерфейс (например, через код), чтобы ускорить процесс. Я должен предотвратить то, что процесс запускается, когда он всегда работает в фоновом режиме.
Каков наилучший метод работы для этого?
Планировщик задач Laravel обрабатывает перекрывающиеся задания создание временного файла до запуска команды и уничтожение его после.
Имя файла основывается на выражении расписания cron и имени команды.
Наличие этого файла приводит к тому, что последующие попытки запуска той же команды будут пропущены
Я бы сделал что-то похожее на это. В верхней части вашего mediaserver:process-queue
Задача я бы проверить, если временный файл с именем что-то вроде mediaserver__process_queue
существовал в storage/
, Если это произойдет, выйти. Если это не создает его. Уничтожьте его, когда задача закончится.
Вам просто нужно быть осторожным в том, как вы справляетесь со сценариями, в которых задача неожиданно завершает работу из необработанного исключения, что приводит к mediaserver__process_queue
остаться, даже если задача больше не выполняется.
В Laravel я выполняю работу в своем коде, как это
Artisan::queue('mediaserver:process-queue', ['index' => $indexName]);
Одну и ту же работу планируется выполнять в фоновом режиме каждый час. Иногда я хочу вызвать его через мой пользовательский интерфейс (например, через код), чтобы ускорить процесс. Я должен предотвратить то, что процесс запускается, когда он всегда работает в фоновом режиме.
Каков наилучший метод работы для этого?
Планировщик задач Laravel обрабатывает перекрывающиеся задания создание временного файла до запуска команды и уничтожение его после.
Имя файла основывается на выражении расписания cron и имени команды.
Наличие этого файла приводит к тому, что последующие попытки запуска той же команды будут пропущены
Я бы сделал что-то похожее на это. В верхней части вашего mediaserver:process-queue
Задача я бы проверить, если временный файл с именем что-то вроде mediaserver__process_queue
существовал в storage/
, Если это произойдет, выйти. Если это не создает его. Уничтожьте его, когда задача закончится.
Вам просто нужно быть осторожным в том, как вы справляетесь со сценариями, в которых задача неожиданно завершает работу из необработанного исключения, что приводит к mediaserver__process_queue
остаться, даже если задача больше не выполняется.