我想检查每分钟是否可以处理特定作业。
为此,我想使用任务计划。
但是,我不确定如何通过我的API最终目标来解决它:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://www.nonexistingdomain.com</AllowedOrigin>
<AllowedMethod>POST</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
您将如何做?
我想通过不直接向用户发送短信来节省一些金钱,仅在15分钟之后并且订单状态没有改变。
在SmsNotificaton::send($user, new OrderReceived($order));
内,我将有一个new OrderReceived($order)
方法。该方法仅检查订单状态是否已更改。如果更改,我们将通过我的handle
发送短信。
如何将SmsGateway
和$user
的数据保存在数据库中,以便您每分钟可以调用 cron命令,再次获取new OrderReceived($order)
和$user
的旧数据,以检查其是否可发送?
它应该与Laravel队列系统的工作原理非常相似,但是我试图理解序列化的工作原理,但是我无法掌握调度程序如何保存数据等等。
答案 0 :(得分:1)
您要做的是使用laravel内置的Jobs&Queues
您将需要创建一个新的工作,例如CheckStatusThenSendSMSJob()
,该工作在派发时将检查订单状态是否已更改或应该发送消息
然后,您无需发送消息,而是需要延迟发送工作
CheckStatusThenSendSMSJob($order)::dispatch->delay(now()->addMinutes(15));
在laravel文档中查看有关队列和延迟分派的更多信息:https://laravel.com/docs/5.8/queues#delayed-dispatching
还要确保使用队列的redis驱动程序或数据库驱动程序将队列实际设置为在后台运行(在另一个进程中)(默认情况下,一旦被同步调用,laravel安装会运行队列)