Laravel Queue无法通过Curl

时间:2018-04-10 09:07:41

标签: php laravel curl queue

我正在尝试使用laravel Queue

我使用以下命令将数据发送到我的队列

  $data = array(
        'from'=> $mailfromname .'<'.$mailfrom.'>',
        'to'=>$toname.'<'.$to.'>',
        'subject'=>$subject,
        'html'=>$html,
        'text'=>$text,
        'o:tracking'=>'yes',
        'o:tracking-clicks'=>'yes',
        'o:tracking-opens'=>'yes',
        'o:tag'=>$tag,
        'h:Reply-To'=>$replyto
    );

比我将数组发送到我的ExampleJob

 Queue::push(new ExampleJob($data)); 

我在工作的句柄中有一个接受$ data

的curl函数

所以我的问题是我的卷曲功能正常工作如果我发送电子邮件而不使用工作但是当我使用工作时我看到工作表被填充而不是它处理但没有电子邮件发送使用卷曲...任何人都知道为什么是那个?

public function handle($data)
{
     $session = curl_init(MAILGUN_URL.'/messages');
curl_setopt($session, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($session, CURLOPT_USERPWD, 'api:'.MAILGUN_KEY);
curl_setopt($session, CURLOPT_POST, true);
curl_setopt($session, CURLOPT_POSTFIELDS, $data);
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_ENCODING, 'UTF-8');
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
curl_setopt($session, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($session);
curl_close($session);
$results = json_decode($response, true);
return $results
}

3 个答案:

答案 0 :(得分:0)

您的句柄方法的参数是$data,但我只看到$array_data正在使用。

答案 1 :(得分:0)

你需要在你的工作的构造函数中设置$data,而不是在句柄函数中

参考这个例子 https://laravel.com/docs/5.6/queues#class-structure

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

答案 2 :(得分:0)

我实际上发现了这个问题,你看到Curl很慢所以当你在cur中使用curl时你需要确保你给它足够的运行时因此将队列监听时间设置为60秒。

php artisan queue:listen --timeout=60