Tengo un bucle foreach que se bifurca dentro de él. Después de que el proceso se bifurca, accede a la base de datos. Me aparece un error:pcntl_fork y la conexión MySQL se ha ido
SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
Lo que pasa es que estoy conectarse a la base de datos después de He bifurcada.
Mi pregunta: ¿Por qué estaría sucediendo esto?
Si esto sucede, ¿estoy realmente accediendo a la base de datos antes de bifurcación? ¿El niño heredará conexiones de DB?
(nota: Puedo publicar el código, pero es bastante grande, ya que todo está en clases, lo que podría ser lo que está causando mi confusión cuando estoy accediendo al DB. Otra cosa que debes saber es que estoy usando ZF .)
No he jugado con Zend Framework pero me pregunto si mantiene algún tipo de agrupación interna de conexiones de bases de datos. ¿O tal vez está haciendo conexiones persistentes? Aparte de eso, los niños no deberían heredar conexiones de db o cualquier otra cosa, ya que son procesos de php diferentes. – Fanis
Ack, me corrigen. Mi respuesta anterior se basó en la intuición, pero no en la experiencia personal, ya que aún no se ha requerido. Leyendo más en él veo que los niños bifurcados heredan la conexión db de sus padres, y es un problema conocido: http://www.php.net/manual/en/function.pcntl-fork.php#70721 – Fanis
@Fanis - Can ¿conviertes tu último comentario en una respuesta para poder hacer clic en el gran cheque verde? Gracias por extraer esta información. No voy a bifurcar, en cambio voy a ejecutar un nuevo proceso que tendrá su propia conexión de DB. Luego se bifurcará, para no vincular el proceso de llamada, y luego hacer su trabajo en el niño, registrando es pid a un registro que otro cron-started-process vendrá y comprobará si se ha completado. Hmmmm ... ¡Podría funcionar esta vez! ¡Gracias! –