Метод runInBackground
Метод runInBackground применяется к задаче планировщика
Laravel и указывает, что задача должна выполняться в фоновом
режиме. Он позволяет запускать команды или задания без ожидания
их завершения, что особенно полезно для длительных операций.
Метод не принимает параметров и возвращает тот же экземпляр
задачи для цепочки вызовов.
Синтаксис
<?php
$schedule->command('your:command')
->runInBackground();
?>
Пример
Давайте запланируем выполнение команды send:reports
ежедневно в фоновом режиме:
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
protected function schedule(Schedule $schedule)
{
$schedule->command('send:reports')
->daily()
->runInBackground();
}
}
?>
Результат выполнения команды:
"Schedule update successful"
Пример
Давайте запланируем выполнение задания каждые пять минут в фоновом режиме:
<?php
namespace App\Console;
use App\Jobs\ProcessData;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
protected function schedule(Schedule $schedule)
{
$schedule->job(new ProcessData())
->everyFiveMinutes()
->runInBackground();
}
}
?>
Результат выполнения кода:
"Job scheduled successfully"
Пример
Давайте выполним произвольный код ежечасно в фоновом режиме:
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Illuminate\Support\Facades\Log;
class Kernel extends ConsoleKernel
{
protected function schedule(Schedule $schedule)
{
$schedule->call(function () {
Log::info('Background task executed');
\DB::table('analytics')->insert([
'event' => 'scheduled_task',
'created_at' => now()
]);
})->hourly()
->runInBackground();
}
}
?>
Результат выполнения кода:
"Background scheduler initialized"
Смотрите также
-
метод
withoutOverlapping,
который предотвращает параллельное выполнение задачи -
метод
onOneServer,
который ограничивает выполнение задачи одним сервером -
метод
timezone,
который устанавливает часовой пояс для задачи -
метод
command,
который добавляет команду в планировщик