Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Problema enviando correos masivos asincronamente

Estas en el tema de Problema enviando correos masivos asincronamente en el foro de Frameworks y PHP orientado a objetos en Foros del Web. 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).: ...
  #1 (permalink)  
Antiguo 02/07/2015, 00:32
Avatar de calichecal  
Fecha de Ingreso: junio-2009
Ubicación: Colombia
Mensajes: 288
Antigüedad: 15 años, 5 meses
Puntos: 12
Busqueda Problema enviando correos masivos asincronamente

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...
__________________
Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad. -Einstein-

Última edición por calichecal; 02/07/2015 a las 01:26
  #2 (permalink)  
Antiguo 04/07/2015, 15:40
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Problema enviando correos masivos asincronamente

vas a requerir utilizar el cronjob ya que requieres habilitar las queues por lo menos con el driver para base de datos y ejecutar el php artisan queue:listen
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 19/07/2015, 16:36
Avatar de calichecal  
Fecha de Ingreso: junio-2009
Ubicación: Colombia
Mensajes: 288
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Problema enviando correos masivos asincronamente

Cita:
Iniciado por hhs Ver Mensaje
vas a requerir utilizar el cronjob ya que requieres habilitar las queues por lo menos con el driver para base de datos y ejecutar el php artisan queue:listen
Si tengo acceso mediante ssh ¿Si ejecuto el escuchador con artisan y luego cierro la consola? (El acceso es remoto) ¿Queda ejecutandose?
__________________
Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad. -Einstein-

Etiquetas: emails, laravel, masivos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:37.