Ho un ciclo foreach che si trova all'interno di esso. Dopo il processo si biforca, accede al database. Ottengo un errore:pcntl_fork e la connessione MySQL sono scomparsi
SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
Il fatto è che sto connessione al database dopo ho biforcuta.
La mia domanda: perché questo dovrebbe accadere?
In questo caso, accedo effettivamente al database prima del biforcimento? Il bambino erediterà le connessioni DB?
(nota: posso postare codice, ma è piuttosto grande in quanto è tutto in classe, che potrebbe essere ciò che sta causando la mia confusione quando sto accedendo al DB. Un'altra cosa che dovresti sapere è che sto usando ZF .)
Non ho giocato con Zend Framework ma mi chiedo se mantiene una sorta di pooling interno di connessioni al database. O forse sta facendo collegamenti persistenti? Oltre a questo, i bambini non dovrebbero ereditare connessioni db o qualsiasi altra cosa in quanto sono diversi processi di php. – Fanis
Ack, sono corretto. La mia risposta sopra era basata sull'intuizione, ma non sull'esperienza personale, poiché non era ancora richiesta. Leggendo di più in esso vedo che i bambini biforcuti ereditano la connessione db dei loro genitori, ed è un problema noto: http://www.php.net/manual/en/function.pcntl-fork.php#70721 – Fanis
@Fanis - Can trasformi il tuo ultimo commento in una risposta in modo da poter fare clic sul grande assegno verde? Grazie per aver estratto queste informazioni. Non forzo, eseguirò invece un nuovo processo che avrà la propria connessione db. In seguito andrà a sborsare, in modo da non legare il processo di chiamata, e poi farlo funzionare nel bambino, registrando il suo pid in un log che un altro processo avviato da cron arriverà e controllerà se è stato completato. Hmmmm ... Potrebbe funzionare solo questa volta! Grazie! –