Foros del Web » Programando para Internet » PHP »

pcntl_fork() - Hilos en PHP

Estas en el tema de pcntl_fork() - Hilos en PHP en el foro de PHP en Foros del Web. Buenas, Tengo la necesidad de usar hilos en php, y me encuentro con varios problemas. Basicamente el problema principal es que php no soporta threads ...
  #1 (permalink)  
Antiguo 02/07/2011, 13:59
 
Fecha de Ingreso: marzo-2008
Mensajes: 237
Antigüedad: 16 años, 8 meses
Puntos: 6
pcntl_fork() - Hilos en PHP

Buenas,

Tengo la necesidad de usar hilos en php, y me encuentro con varios problemas.
Basicamente el problema principal es que php no soporta threads (si me equiboco alguien dígame), y hicieron una extension para que se puedan usar.

Esa extension contiene la función pcntl_fork()
(Especificaciones aqui: http://php.net/manual/ru/function.pcntl-fork.php)

Probe un codigo tan simple como este:
Código:
<?php

$pid = pcntl_fork();
if ($pid == -1) {
     die('could not fork');
} else if ($pid) {
     // we are the parent
     pcntl_wait($status); //Protect against Zombie children
} else {
     // we are the child
}

?>
El problema es que mi php pareciera no soportar esta funcion. Según los logs de apache, me dice que no logra identificar la función.
Las versiones que estoy usando son:
Apache 2.2.11
PHP 5.2.9
Bajo Linux.

Mi pregunta es:
¿Alguien usó esta funcion?
¿Hay que bajarse alguna libreria extra para poder usarla?
¿Se requieren determiandos requisitos para poder usarla? lei que solo corria bajo linux, y quizá bajo solo algunas versiones php.

Necesito hacer threads si o si. Alguien ayudeme :(
  #2 (permalink)  
Antiguo 02/07/2011, 14:08
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: pcntl_fork() - Hilos en PHP

Funciona solo en sistemas *nix y tiene que estar habilitada, puedes comprobarlo con php -i y ver si el soporte para pcntl esta habilitado.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 02/07/2011, 14:28
 
Fecha de Ingreso: marzo-2008
Mensajes: 237
Antigüedad: 16 años, 8 meses
Puntos: 6
Respuesta: pcntl_fork() - Hilos en PHP

En mi caso no está habilitado porque esta función me devuelve el die:

Código:
 if (! function_exists('pcntl_fork')) die('PCNTL functions not available on this PHP installation');  
//
//
La pregunta es, como habilitarlo????
  #4 (permalink)  
Antiguo 02/07/2011, 14:32
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: pcntl_fork() - Hilos en PHP

Has mirado la doc ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 02/07/2011, 14:39
 
Fecha de Ingreso: marzo-2008
Mensajes: 237
Antigüedad: 16 años, 8 meses
Puntos: 6
Respuesta: pcntl_fork() - Hilos en PHP

Gracias, me fijaré
  #6 (permalink)  
Antiguo 03/07/2011, 18:44
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 11 meses
Puntos: 17
Respuesta: pcntl_fork() - Hilos en PHP

Si, necesitas habilitar el modulo (hoy en día en una instalación por defecto de php5 viene activada, lo he visto así en debian y redhat).

Ahora, no es un hilo, es un fork, a si que no hay comunicación real entre los procesos, a menos que implementes un mecanismo para que ellos se comuniquen (vía un socket unix o tcp, memoria compartida, etc).

Te dejo un ejemplo sencillo de fork en php, permite descargar las imagenes de un documento issuu, en modo monoproceso o con más de un proceso.
Forkear Procesos en PHP

Saludos

Etiquetas: hilos
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 20:30.