uso de f ork
Publicado por luis (1 intervención) el 18/10/2009 02:29:09
saludos a migos tengo un gran problema con el uso de fork en php.
lo que trato de hacer pienso que no deberia ser complicado. bueno
cojo uns direcciones IIP de la BDD y por cada IP yo mando ciertos archivos por FTP.
el proceso es un poco lento por que por cada direccion IP envio 20 o 30 archivos , esto lo hacia asi:
$ip = ' array con las direcciones ip'
for(i = 0 ; i < count($ip); $ip++)
{
proceso
enviar
archivos .......
}
y toma mucho tiempo dependiendo de la cponexion del cliente a veces (10 kb)
lo que queria es hacerlo de una sola esdecir enviar los archivos por cada IP utilizando el famoso fork
asi:
$ip = ' array con las direcciones ip'
for(i = 0 ; i < count($ip); $ip++)
{
$pid = pcntl_fork();
switch ($pid) {
case '-1':
echo 'error al crear el proceso.';
break;
case '0':
proceso
enviar
archivos .......
break;
default:
pcntl_waitpid($pid, $status, 0);
break;
}
pero no me re sulta sigue envaando uno por uno , es decir coge la primera IP y espera que el proceso de envio se termine (envio de los archivos para la primera ip) para de ahi coger la siguiente ip. no me crea procesos hijos (trabajo bajo linux redhat y php 4).
despues probé comentando la linea pcntl_waitpid($pid, $status, 0); y peor aun comence a tener errores rarisomos en la base de datos.
alguna idea con eso por favor e intendado pero ya me partí la cabeza, no se si necesito configurar algo en el php.ini o en linux o en apache.
o si no si tienen algunba sugerencia de como simular hilos en pohp sin usar fork
10000 gracias de antemano
Luis
lo que trato de hacer pienso que no deberia ser complicado. bueno
cojo uns direcciones IIP de la BDD y por cada IP yo mando ciertos archivos por FTP.
el proceso es un poco lento por que por cada direccion IP envio 20 o 30 archivos , esto lo hacia asi:
$ip = ' array con las direcciones ip'
for(i = 0 ; i < count($ip); $ip++)
{
proceso
enviar
archivos .......
}
y toma mucho tiempo dependiendo de la cponexion del cliente a veces (10 kb)
lo que queria es hacerlo de una sola esdecir enviar los archivos por cada IP utilizando el famoso fork
asi:
$ip = ' array con las direcciones ip'
for(i = 0 ; i < count($ip); $ip++)
{
$pid = pcntl_fork();
switch ($pid) {
case '-1':
echo 'error al crear el proceso.';
break;
case '0':
proceso
enviar
archivos .......
break;
default:
pcntl_waitpid($pid, $status, 0);
break;
}
pero no me re sulta sigue envaando uno por uno , es decir coge la primera IP y espera que el proceso de envio se termine (envio de los archivos para la primera ip) para de ahi coger la siguiente ip. no me crea procesos hijos (trabajo bajo linux redhat y php 4).
despues probé comentando la linea pcntl_waitpid($pid, $status, 0); y peor aun comence a tener errores rarisomos en la base de datos.
alguna idea con eso por favor e intendado pero ya me partí la cabeza, no se si necesito configurar algo en el php.ini o en linux o en apache.
o si no si tienen algunba sugerencia de como simular hilos en pohp sin usar fork
10000 gracias de antemano
Luis
Valora esta pregunta


0