Я пытаюсь использовать очередь laravel
Я использую следующую команду для отправки данных в мою очередь
$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));
У меня есть в дескрипторе моей работы функция curl, которая принимает $ data
Итак, моя проблема здесь в том, что моя функция curl работает нормально, если я отправляю электронные письма без использования заданий, но когда я использую задания, я вижу, что таблица заданий заполняется и затем обрабатывается, но электронная почта не отправляется с использованием 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
}






Параметр для вашего метода обработки - $data, но я вижу, что используется только $array_data.
вам нужно установить $data в конструкторе вашей работы, а не в функции дескриптора
обратитесь к этому примеру https://laravel.com/docs/5.6/queues#class-structure
public function __construct($data)
{
$this->data = $data;
}
Я действительно обнаружил проблему: вы видите, что Curl работает медленно, поэтому при использовании curl в ques вам необходимо убедиться, что вы даете ему адекватное время выполнения, поэтому установите время ожидания очереди на 60 секунд.
php artisan queue:listen --timeout=60