Monday, April 27, 2009

Threads ( Hilos ) en PHP

Para los que estemos acostumbrados al api de threads de java y queramos realizar una acción multihilo en php existe una clase PHP_FORK de la cual podemos extender y sobreescribir el método run como haríamos en java para después llamar a start().

Dicha clase utiliza la función pcntl_fork para ejecutar la acción en un nuevo proceso.

Esta función es parte de una extensión para php creada para realizar control de procesos ya que esto no es nativo del lenguaje, dicha extensión solo funciona en entornos Unix, así que lo sentimos por los windowseros pero no podrán realizar este ejemplo:

Ponemos el código en un archivo al mismo nivel que el archivo Fork.php y lo ejecutamos.



include ( './Fork.php' );

class executeThread extends PHP_Fork {
var $counter;

function executeThread($name)
{
$this->PHP_Fork($name);
$this->counter = 0;
}

function run()
{
$i = 0;
while ($i < 5) {
print time() . "-(" . $this->getName() . ")-" . $this->counter++ . "\n";
sleep(1);
$i++;
}
}
}


for ($index = 1; $index < 5; $index++) {
$thread = new executeThread("hilo numero -> ".$index);
$thread->start();
}

?>

4 comments:

  1. Gracias por el Post, conciso y practico :-)

    ReplyDelete
  2. Hola Joan Navarrete he leido tu post y está excelente, pero no puedo bajar el paquete de clases PHP_FORK, por favor si pudieras indicarme te agradecería eternamente, mi e-mail es alfre1684@gmail.com

    ReplyDelete
  3. oye una pregunta fuera del tema
    como se hace para q te salga ese layout en lso codigos???

    ReplyDelete
  4. No comprendo mucho, se de threads en java pues en el Desktop si quiero recibir consultas y enviar informacion para clientes a la vez pero en php tengo entendido que crea una nueva instancia cada vez que alguien entra a la web automaticamente, no requiere crear hilos. Me podrian explicar cual seria la importancia de los threads en php ?

    ReplyDelete