threads pcntl_fork parallel hilos async php process fork

pcntl_fork - php parallel processing



¿El proceso de bifurcación en PHP/Apache es una buena idea? (4)

El proceso principal finalizará, la página del usuario se cargará por completo, el proceso secundario continuará y el uso no tendrá comentarios sobre si el proceso hijo finalizó o no con éxito.

Estoy escribiendo una aplicación simple en PHP que necesita ocasionalmente llevar a cabo un conjunto bastante intensivo de actualizaciones de MySQL. En particular, no quiero que esto cause un retraso para el usuario, por lo que me pregunto sobre el uso de pcntl_fork ().

Sin embargo, no estoy seguro de cómo funciona esto realmente: ¿continuará ejecutándose el proceso hijo después de que finalice el proceso principal? ¿Terminará el proceso padre y la carga de la página del usuario estará completa antes de que el proceso hijo se complete?

En otras palabras, ¿es esta una manera segura de tener un script PHP (ejecutando bajo Apache) hacer algunas actualizaciones que consumen mucho tiempo sin demorar al usuario, o debería simplemente pedirles a mis usuarios que soporten algún retraso?


Es probable que alguien le cuente en detalle lo que sucede cuando lo llama bajo apache, pero es probable que obtenga respuestas que no siempre son ciertas dependiendo de las versiones y combinaciones de apache y php que esté utilizando. Deberías usar ajax y tener dos solicitudes. Responda una vez con la página que dice lo que está haciendo y luego con una encuesta de llamada ajax una segunda solicitud para el estado y donde realmente hace el trabajo.


Si PHP se ejecuta bajo Apache ya que el mod_php forking del módulo no funcionará en absoluto, recibirá una advertencia diciendo que la función * pcntl_fork () * no está definida. En ese caso, una buena solución es usar exec () en su lugar para ejecutar un trabajo de PHP separado usando la línea de comando.


Creo que es una mala idea He hecho cosas similares, y apache redirige la salida del padre a su hijo. Es su navegador muestra la información de uno de los procesos secundarios.
Haga clic aquí para obtener más información
Espero que te ayude