Bug #67061 [Opn->Nab]: mysqli don't work with pcntl_fork
| From: | requinix@php.net | Date: | Sat, 12 Apr 2014 23:19:08 +0000 |
| Subject: | Bug #67061 [Opn->Nab]: mysqli don't work with pcntl_fork | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-185190@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=67061&edit=1
ID: 67061
Updated by: requinix@php.net
Reported by: aurelien dot lequoy at esysteme dot com
Summary: mysqli don't work with pcntl_fork
-Status: Open
+Status: Not a bug
Type: Bug
Package: MySQLi related
Operating System: Debian 7.4
PHP Version: 5.5.11
Block user comment: N
Private report: N
New Comment:
You cannot use the same connection at once in both processes. Each one needs its own $db.
Previous Comments:
------------------------------------------------------------------------
[2014-04-12 23:16:51] aurelien dot lequoy at esysteme dot com
Description:
------------
We have to close connection MySQL before to use pcntl_wait and repoen it after to make it work.
Or when the son dead and get back with father.
Test script:
---------------
<?php
$db = new MySQLi('localhost','root','zeb33tln');
if (pcntl_fork()) {
echo "pid du pere ".getmypid().PHP_EOL;
$status = 0;
$result = $db->query('select version()');
if ($db->error) echo "error 1".$db->error.PHP_EOL;
//pcntl_wait($status);
$result = $db->query('select version()');
if ($db->error) echo "error 2".$db->error.PHP_EOL;
} else {
echo "pid son ".getmypid().PHP_EOL;
$result = $db->query('select version()');
if ($db->error) echo "error 3".$db->error.PHP_EOL;
exit;
}
$result = $db->query('select version()');
if ($db->error) echo "error 4".$db->error.PHP_EOL;
echo "END".PHP_EOL;
Expected result:
----------------
pid du pere 26717
pid son 26718
END
Actual result:
--------------
pid du pere 26749
pid son 26750
PHP Warning: Packets out of order. Expected 1 received 5. Packet size=31 in
/home/www/glial/testmysql.php on line 11
PHP Warning: mysqli::query(): MySQL server has gone away in /home/www/glial/testmysql.php on line
11
PHP Warning: mysqli::query(): Error reading result set's header in
/home/www/glial/testmysql.php on line 11
error 1MySQL server has gone away
error 2MySQL server has gone away
error 4MySQL server has gone away
END
PHP Warning: Packets out of order. Expected 3 received 0. Packet size=65029 in
/home/www/glial/testmysql.php on line 24
PHP Warning: mysqli::query(): MySQL server has gone away in /home/www/glial/testmysql.php on line
24
error 3MySQL server has gone away
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=67061&edit=1