J'ai une boucle foreach qui fourche dedans. Après les chaînes de traitement, il accède à la base de données. Je reçois une erreur:pcntl_fork et la connexion MySQL est partie
SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
La chose est, je me connecte à la base de données après j'ai fourchue.
Ma question: Pourquoi cela se produirait-il?
Si cela se produit, est-ce que j'accède à la base de données avant? L'enfant héritera-t-il des connexions DB? (Note: Je peux écrire du code, mais il est assez grand car tout est dans les classes, ce qui pourrait être à l'origine de ma confusion quand j'accède à la DB. Une autre chose que je devrais savoir c'est que j'utilise ZF .)
Je n'ai pas joué avec Zend Framework mais je me demande s'il conserve une sorte de pool interne de connexions à la base de données. Ou peut-être fait-il des connexions persistantes? Autre que cela, les enfants ne devraient pas hériter des connexions DB ou quoi que ce soit d'autre car ce sont des processus php différents. – Fanis
Ack, je suis corrigé. Ma réponse ci-dessus était basée sur l'intuition mais pas sur l'expérience personnelle car cela n'a pas encore été requis. En lisant plus d'informations, je vois que les enfants fourchus héritent de la connexion db de leurs parents, et c'est un problème connu: http://www.php.net/manual/en/function.pcntl-fork.php#70721 – Fanis
@Fanis - Can vous transformez votre dernier commentaire en une réponse afin que je puisse cliquer sur le grand chèque vert? Merci d'avoir trouvé cette information. Je ne vais pas bifurquer, à la place je vais exécuter un nouveau processus qui aura sa propre connexion db. Il va alors bifurquer, afin de ne pas lier le processus appelant, puis faire son travail dans l'enfant, en enregistrant son pid dans un journal qu'un autre processus cron-started viendra et vérifier s'il a été complété. Hmmmm ... Ça pourrait marcher juste cette fois! Merci! –