Edit report at https://bugs.php.net/bug.php?id=45797&edit=1
ID: 45797 Comment by: xxorax at gmail dot com Reported by: jketterl at chipxonio dot de Summary: PDO closes connection too early when combined with pcntl_fork() Status: Bogus Type: Bug Package: MySQL related Operating System: linux (debian) PHP Version: 5.2.6 Block user comment: N Private report: N New Comment: However, I think the problem is not to use differents connections in differents processes, the problem is to maintain the connection in the parent process, because there is no solution to keep a mysql connection in a parent after a child closing. And I am sorry that php does not seem to become a little bit multi-process, in default to be multi-threaded... Previous Comments: ------------------------------------------------------------------------ [2008-08-12 13:30:48] johan...@php.net Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php That's due to the architecture of PHP, you should use different connections in different processes else you get all different kinds of random results, and connecting to a MySQL daemon is a quite cheap operation. ------------------------------------------------------------------------ [2008-08-12 11:46:21] jketterl at chipxonio dot de Description: ------------ When forking a php skript using pcntl_fork, the PDO connections to a MySQL server are lost as soon as one of the processes exits (parent or child, which ever exits first) and the remaining process can't continue to execute queries (or, even worse, is interrupted during an active query). the code to reproduce is a CLI script as the application i'm working on is one too. you will need to replace username & password. also, I had to change the file extension in order to make it downloadable. Reproduce code: --------------- http://www.djmacgyver.net/files/test2.php.txt Expected result: ---------------- before fork records returned: 1 child records returned: 1 parent records returned: 1 after fork records returned: 1 end Actual result: -------------- before fork records returned: 1 child records returned: 1 parent records returned: 1 after fork SQLSTATE[HY000]: General error: 2006 MySQL server has gone away #0 /home/jketterl/public_html/me/application/import/test2.php(5): PDO->query('select * from p...') #1 /home/jketterl/public_html/me/application/import/test2.php(41): doQuery(Object(PDO)) #2 {main} end ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=45797&edit=1