Edit report at https://bugs.php.net/bug.php?id=48447&edit=1
ID: 48447
Comment by: steffen at kernelguy dot dk
Reported by:jjoss at mail dot ru
Summary:After FORK Interbase doesn't work
Status: Assigned
Type: Bug
Package:InterBase related
Operating System: Ubuntu Linux 2.6.18
PHP Version:5.2.9
Assigned To:mariuz
Block user comment: N
Private report: N
New Comment:
I can confirm this problem.
I'm using it the same way in a spawned process and normally it works just fine.
However:
If I restart the firebird process the forked process keeps getting the
transaction error message.
I have tried everything I can think of when I get the error:
ibase_close($db_handle);
$db_handle = null;
Sleep(2);
ibase_connect or ibase_pconnect; // Tried both
ibase_trans; // Always fails
So for the last year I have been restarting my process, after a firebird
restart.
Previous Comments:
[2012-01-05 09:05:31] steffen at kernelguy dot dk
If I only call ibase_connect from the child code it works.
What I'm doing:
>From a php script run by apache I exec a spawn.php script which again calls
>pcntl_fork.
I can access the database before the fork, which is successfull.
Then after the fork I get the error below when I try to start a new
transaction, even after creating a new connection with ibase_connect:
"WARNING ibase_trans(): Unable to complete network request to host "localhost".
Error writing data to the connection."
If I dont access the database before the fork, then the child code works. So
that's my workaround for now.
[2009-06-01 17:02:33] jjoss at mail dot ru
Description:
After using the pcntl_fork() function both parent and child are not able to
connect to the database.
Reproduce code:
---
obj->Log->debug('ReportGeneric before fork ('.getmygid().')');
$pid = pcntl_fork();
if ($pid == -1) die('fork error');
if ($pid)
{
// PARENT
dbGet('parent');
posix_kill(getmypid(), 9);
}
else
{
// CHILD
dbGet('child');
posix_kill(getmypid(), 9);
}
?>
Expected result:
$ php fork_interbase.php
grandpa: 27850
grandpa:
Array
(
[0] => 1
)
child: 27852
child:
Array
(
[0] => 1
)
parent: 27850
parent:
Array
(
[0] => 1
)
Killed
$
Actual result:
--
$ php fork_interbase.php
grandpa: 27850
grandpa:
Array
(
[0] => 1
)
child: 27852
parent: 27850
parent: row empty - Unable to complete network request to host "localhost".
Error writing data to the connection. Broken pipe
child: query error - Unable to complete network request to host "localhost".
Error reading data from the connection.
Killed
$
--
Edit this bug report at https://bugs.php.net/bug.php?id=48447&edit=1