49 lines
1.5 KiB
PHP
49 lines
1.5 KiB
PHP
<?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);
|
|
}
|
|
}
|