Thread: BUG #15459: no connection to the server

BUG #15459: no connection to the server

From
PG Bug reporting form
Date:
The following bug has been logged on the website:

Bug reference:      15459
Logged by:          medivhJay
Email address:      jay.medivh@gmail.com
PostgreSQL version: 9.6.8
Operating system:   debian
Description:

Hello 

I used php7.1 + PDO connect to postgresql

when I use fork , like this 

<?php
$pid = pcntl_fork();
            if ( $pid === 1 ) {
                TaskManager::log('error');
            } elseif ( $pid ) {
                pcntl_wait($status);
            } else {
                try {
                    call_user_func_array($func, $argv);
                } catch ( \Exception $e ) {
                    TaskManager::log($e);
                }
                exit(0);
            }


PDO throw an exception

like this
[2018-10-26 13:12:02] PDOException: SQLSTATE[HY000]: General error: 7 no
connection to the server in

if I don't use pcntl_fork , nothing 

I don't know how to fix it , I need your help

Thank you!


Re: BUG #15459: no connection to the server

From
Jeff Janes
Date:
On Fri, Oct 26, 2018 at 1:34 AM PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has been logged on the website:

Bug reference:      15459
Logged by:          medivhJay
Email address:      jay.medivh@gmail.com
PostgreSQL version: 9.6.8
Operating system:   debian
Description:       

Hello

I used php7.1 + PDO connect to postgresql

when I use fork , like this

<?php
$pid = pcntl_fork();
            if ( $pid === 1 ) {
                TaskManager::log('error');
            } elseif ( $pid ) {
                pcntl_wait($status);
            } else {
                try {
                    call_user_func_array($func, $argv);
                } catch ( \Exception $e ) {
                    TaskManager::log($e);
                }
                exit(0);
            }


PDO throw an exception

You shouldn't have a database handle open over a fork call.  Open it after the fork.  I have no idea how to do that, since it seems to be happening implicitly, or at least in part of your code not shown.  You might want to ask in a forum specific to php PDO.  Also, shouldn't you be testing $pid against -1, not +1?

Cheers,

Jeff