Foros del Web » Programando para Internet » PHP »

Pasar un array como argumento para un archivo usando exec() o system()

Estas en el tema de Pasar un array como argumento para un archivo usando exec() o system() en el foro de PHP en Foros del Web. Hola; Quiero ejecutar un archivo php en segundo plano para hacer envío de mails a listas de correos. El caso es que el script necesita ...
  #1 (permalink)  
Antiguo 10/07/2013, 12:26
 
Fecha de Ingreso: mayo-2012
Ubicación: Palma de Mallorca
Mensajes: 71
Antigüedad: 11 años, 11 meses
Puntos: 1
Pasar un array como argumento para un archivo usando exec() o system()

Hola;

Quiero ejecutar un archivo php en segundo plano para hacer envío de mails a listas de correos.

El caso es que el script necesita recibir una lista de direcciones como un array para recorrerlo con un bucle e ir haciendo los envíos con el php mailer.

Tenía previsto inciar el script con exec() o con system(), mas o menos algo así:

Código PHP:
//Variables para pasar al script mailer.php
$para="'[email protected]'";
$asunto="'Aquí el asunto del mensaje'";
$mensaje="'Aquí el cuerpo del mensaje...'";
$direcciones=$_SESSION['direcciones']; //$_SESSION['direcciones'] es un array que almacena todas las direcciones de correo de una determinada lista

//Iniciamos el script mailer.php en segundo plano
exec("php -f /var/www/vhosts/mi_host.com/httpdocs/exec/mailer.php -- $para $asunto $mensaje $direcciones >/dev/null &"); 
El problema es que no se como pasar argumentos que sean arrays a la función exec(), porque haciéndolo así, directamente, el valor que toma el argumento $direcciones es Array (exactamente como si hicieras un echo de $direcciones).

¿Alguien sabe si se puede hacer lo que quiero y de que manera?

En caso de que no se pueda... ¿de que manera puedo ejecutar un script en segundo plano y pasarle la lista de direcciones que tengo en el array $direcciones?

Gracias a todos de antemano.

Saludos,

GMG
  #2 (permalink)  
Antiguo 10/07/2013, 13:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Pasar un array como argumento para un archivo usando exec() o system()

Un script solo te recibe argumentos sencillos, en este caso strings (o números pero como string).

Para lo que deseas hacer puedes usar implode() que une un array por un parámetro "glue" y efectivamente transformar de un array a un string.

Otra opción es que guardes en un archivo de texto las direcciones y las leas, ya que no se cual es el límite de parámetros que puedas mandar por consola.

Saludos.
  #3 (permalink)  
Antiguo 10/07/2013, 13:33
 
Fecha de Ingreso: mayo-2012
Ubicación: Palma de Mallorca
Mensajes: 71
Antigüedad: 11 años, 11 meses
Puntos: 1
Cita:
Iniciado por GatorV Ver Mensaje
Un script solo te recibe argumentos sencillos, en este caso strings (o números pero como string).

Para lo que deseas hacer puedes usar implode() que une un array por un parámetro "glue" y efectivamente transformar de un array a un string.

Otra opción es que guardes en un archivo de texto las direcciones y las leas, ya que no se cual es el límite de parámetros que puedas mandar por consola.

Saludos.
Perfecto GatorV, había pensado guardar las direcciones en la BBDD pero creo que será mucho más eficiente usar un txt, tal y como tu propones.

Gracias por tu ayuda, me ha sido muy útil.

Un saludo.

GMG

Etiquetas: html
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 18:50.