Первые попытки организовать работу с запуском процессов по расписанию. Понимаю, что это не совсем не redis, но по смыслу близко, а создавать ветку под единственныйы скрипт не хотел

This commit is contained in:
vasya
2026-04-11 22:40:34 +03:00
parent 1cdc04e8ef
commit 184629d15b
@@ -0,0 +1,48 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
/**
* Базовый класс для описания команд по расписанию
* Создан, в частности, чтобы предоставить универсальный функционал для всех команд, запускаемых по расписанию
*/
abstract class BaseScheduleCommand extends Command
{
/**
* Метод выполнения команды
*
* @param callable $execFunc функция с логикой выполнения команды
* @return void
*/
protected function executeCommand(callable $execFunc): void
{
try {
$execFunc();
} catch (\Throwable $th) {
$this->logExecErr($th);
}
}
/**
* Метод логирования ошибки выполнения скриптов по расписанию
*
* @param \Throwable $th
* @return void
*/
private function logExecErr(\Throwable $th): void
{
$context = [
//Скрипт откуда запустилась задача
'command' => static::class,
//Скрипт, в котором произошла ошибка
'file' => $th->getFile(),
'line' => $th->getLine(),
];
\Log::channel('schedule_err')->error($th->getMessage(), $context);
}
}