Hola a todos. Cordial saludo. He intentando varias cosas. Aunque básicamente ya envío los correos,
estos no se envían en segundo plano (Cola de trabajo).:
Función que envía los correos:
Código PHP:
public function store()
{
date_default_timezone_set('america/bogota');
$email = new Email;
$inputs = $this->request->all();
$email->title = $inputs['title'];
$email->reason = $inputs['reason'];
$email->content = $inputs['content'];
$email->created_at = date('Y-m-d H:i:s');
$clients = Client::where('activo',1)->get();
$arrayVarsTemplate = array('title_message'=>$inputs['title'],'content_message' => $inputs['content']);
$issueMail = $inputs['reason'];
foreach ($clients as $key => $value) {
$addresseeMail = $value->email;
Mail::queue('emails/template_email_1', $arrayVarsTemplate, function ($message) use ($issueMail,$addresseeMail){
$message->subject($issueMail);
$message->to($addresseeMail);
});
}
$email->save();
return response()->json([
'msg' => 'Success'
], 200
);
}
Ya intenté crear una cola de ejecución por aparte "Queues" utilizando el típico ejemplo que se encuentra en la documentación oficial pero tampoco funciono y el método Mail::queue ahorra mucho trabajo.
He intentando con tres drivers, sync, redis y ahora con database (Ya hice la migración y se creo la table jobs)
Código PHP:
'default' => env('QUEUE_DRIVER', 'database'),
Todo funciona perfecto estoy utilizando mandrill, pero cuando envío unos 200 correos(Cantidad de usuarios) la petición en el cliente(Angularjs) se demora 2 minutos y medio para devolver la respuesta. (
No se esta enviando los correos de manera asincrona)
¿Me falta activar algún escuchador con php artisan?
Ojala, no sea así por que yo tengo funcionando esta aplicación web en un servidor compartido y no tengo acceso por consola de ningún tipo
¿Será que la culpa es del foreach? (Aunque no creo que el ciclo se demore tanto recorriendo modelos, ¿o si?)
Agradezco sus recomendaciones. Estoy utilizando Laravel 5.0
Sean sinceros...¿Realmente esto es seguro que funciona? Por que estoy pensando en utilizar un cronjob que se ejecute cada 10 minutos, verifica si hay correos para enviar con una peticion get por consola y se acabo el problema y voy a la fija... Pero quiero explotar bien Laravel y aprender...