Blog de Gonzalo

FORK DE PROCESOS

El fork de procesos consiste en la creación de hilos de un proceso para distribuir la carga de ejecución en varias instancias de php. Cada instancia o hilo llevará a cabo una tarea.
Como en muchos lenguajes, php hay herramientas disponibles para crear y manejar procesos que es la extensión Process Control (PCNTL) solo disponible en sistemas Unix o Linux.
Cuando un proceso realiza una llamada a Process Control, el sistema crea un proceso nuevo, igual al padre pero con un PID distinto.
Dichos procesos son independientes y no tienen una comunicación directa, si deseamos comunicarlos entre ellos es necesario implementar algún tipo de comunicación entre procesos, como el envío de señales, comunicación por sockets o tcp, etc...
Hay muchas tareas que obtienen un mayor rendimiento al realizarlas con procesos concurrente versus a un proceso, como la descarga de archivos, la busqueda de archivos, ping a un rango de red, etc...
Para llamar a la función b>Process Control del sistema desde en php, hay que llamar a la función pcntl_fork, que nos devuelve el pid del nuevo proceso, por lo tanto, con un if se puede determinar el hijo. El Process Control no debería estar activado para un servidor de entorno web, ya que podrían ocurrir resultados inesperados utilizando las funciones de Process Control.

Compartir en twitter