Laravel Queue如何在作业句柄方法中获取数据

Dee*_*ari 2 php laravel laravel-5.5

我创建了一系列消息,通过twilio以短信形式发送.

我创建了一个控制器,将消息放入队列中,并在post请求中接收数据.这是我的控制器来排队:

public function make_queue(Request $request)
    {
        $data = array(
            'phone' => $request->input('phone'),
            'message'=> $request->input('message'),
            'token'=> $request->input('token')',
            'sid'=> $request->input('sid')
        );

        ProcessMessages::dispatch($data)
        ->delay(now()->addSeconds(15));

        return 'message will be sent';
    }
Run Code Online (Sandbox Code Playgroud)

并且在处理工作中,在句柄功能中

public function handle()
{
   $token = should_come_from job;
   $sid = should_come_from job;
   $ids = should_come_from job;
   $msg = should_come_from job;
   try{
        //send message
      }
   catch (exception $e)
          {
             handle exception
          }
      }
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何获取handle函数中的值来实际发送消息....

The*_*pha 5

您需要在作业处理程序类(ProcessMessages)中添加构造函数方法,例如:

// namespace and use statements...

class ProcessMessages implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $data;

    public function __construct(array $data)
    {
        $this->data = $data;
    }

    public function handle()
    {
        $token = $this->data['token'];
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

编写完作业类后,可以使用作业本身的调度方法进行调度.传递给dispatch方法的参数将被赋予作业的构造函数.阅读有关调度作业的信息.