Метод push
Метод push класса Queue применяется для добавления
задачи в очередь. Первым параметром передаётся имя класса
задачи или объект задачи, вторым - данные для задачи
(массив параметров), третьим - имя очереди.
Синтаксис
<?php
Queue::push($job, $data = [], $queue = null);
?>
Пример
Давайте создадим простую задачу для отправки email-уведомлений:
<?php
namespace AppJobs;
use IlluminateContractsQueueShouldQueue;
use IlluminateQueueInteractsWithQueue;
class SendEmailJob implements ShouldQueue
{
use InteractsWithQueue;
protected $email;
protected $message;
public function __construct($email, $message)
{
$this->email = $email;
$this->message = $message;
}
public function handle()
{
// Отправка email
echo "Sending email to " . $this->email;
}
}
?>
Теперь добавим эту задачу в очередь:
<?php
namespace AppHttpControllers;
use AppJobsSendEmailJob;
use IlluminateSupportFacadesQueue;
class EmailController extends Controller
{
public function send()
{
$job = new SendEmailJob('user@example.com', 'Welcome!');
Queue::push($job);
return "Job pushed to queue";
}
}
?>
Пример
Добавим задачу в очередь с дополнительными данными:
<?php
namespace AppHttpControllers;
use AppJobsProcessDataJob;
use IlluminateSupportFacadesQueue;
class TaskController extends Controller
{
public function process()
{
$data = ['id' => 1, 'status' => 'active'];
Queue::push('AppJobsProcessDataJob', $data);
return "Job pushed with data";
}
}
?>
Пример
Добавим задачу в определённую очередь:
<?php
namespace AppHttpControllers;
use AppJobsGenerateReportJob;
use IlluminateSupportFacadesQueue;
class ReportController extends Controller
{
public function generate()
{
$reportJob = new GenerateReportJob(['type' => 'daily']);
Queue::push($reportJob, [], 'reports');
return "Report generation queued";
}
}
?>
Пример
Использование метода push с задержкой:
<?php
namespace AppHttpControllers;
use AppJobsDelayedJob;
use IlluminateSupportFacadesQueue;
class DelayedController extends Controller
{
public function schedule()
{
$job = new DelayedJob('scheduled task');
Queue::later(60, $job);
return "Job scheduled for later";
}
}
?>