Все о Queues
в Laravel
вы можете прочитать в документации . Вам необходимо сгенерировать Queue Job
и отправить SmsMessage
с контроллера:
Класс SmsMessage:
class SmsMessage {
private $number;
private $message;
public function getNumber(): ?string {
return $this->number;
}
public function setNumber(string $number) {
$this->number = $number
}
public function getMessage(): ?string {
return $this->message;
}
public function setMessage(string $message) {
$this->message = $message
}
}
Контроллер:
Затем из метода контроллера отправьте некоторые данные и поместите их в очередь:
class SmsController extends Controller
{
/**
* Send new sms
*
* @param Request $request
* @return Response
*/
public function send(Request $request)
{
// Some code here
$smsMessage = new SmsMessage();
$smsMessage->setNumber('xxx');
$smsMessage->setMessage('Lorem ipsum ...');
SendSms::dispatch($smsMessage);
}
}
SmsQueueJob Класс:
php artisan make:job SmsQueueJob
Будет создан простой класс скелета:
class SmsQueueJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $smsMessage;
/**
* Create a new job instance.
*
* @param SmsMessage $smsMessage
* @return void
*/
public function __construct(SmsMessage $smsMessage)
{
$this->smsMessage= $smsMessage;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
// Here send the SMS message
SMS::to($sms->getNumber())->send(new WelcomeSms());
}
}
Вы можете создать новую очередь, новое соединение для этой очереди
Чтобы запустить работника очереди, запустите следующую команду:
php artisan queue:work
В производственной среде вы должны запустить эту команду как Cron Job
или использовать Supervisor