ID: 11993
Updated by: zak
Reported By: [EMAIL PROTECTED]
Old Status: 
Status: Open
Bug Type: MySQL related
Operating System: Debian 2.19
PHP Version: 4.0.6
New Comment:

Dear Ati,

When you enter a bug report, please make the script that reproduces the error as short 
and simple as possible.

I do not believe that the problem that you are encountering is a bug - you just have 
too many connections open at once.

Try this script:

<pre>
<?php
error_reporting (0);

function test () {
        static $count = 0;

        if (++$count < 20) {
                echo "Opening $count:";
                var_dump ($db = mysql_connect ('localhost:3306', replace_me, 
replace_me));
        
                test ();

                --$count;
                echo "Closing $count:";
                var_dump (mysql_close ($db));
        } 
}

test ();
?>
</pre>

Now try it with mysql_pconnect -- does the error go away? It does for me.

In most cases, you will only need a *single* connection to a mysql database -- not 
multiple.

This may still be a bug - two or more calls to mysql_connect with the same arguments 
should only result in one connection being opened. Each call will return the same 
connection ID.

Previous Comments:
------------------------------------------------------------------------

[2001-07-10 21:31:02] [EMAIL PROTECTED]

i have tried out with the following configurations:
server1: php-4.0.6/mysql.3.23.32/apache-1.3.20/debian 2.19
server2: php-4.0.6/mysql.3.23.37/apache-1.3.20/debian 2.19

the result is the same as with php-4.0.4pl1

please check this...

thanks
ati

------------------------------------------------------------------------

[2001-07-09 19:22:19] [EMAIL PROTECTED]

debian 2.19 / mysql 3.23.37 / php 4.0.4pl1

configure section of phpinfo():
'./configure' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-tiff-dir' 
'--disable-posix' '--enable-ftp' '--enable-calendar' '--with-imap' '--with-mcrypt' 
'--with-swf=/usr/local/swf' '--with-apache=/home/atiware/apache_1.3.14' 
'--enable-track-vars' '--with-mysql=/usr/local'


the sript that reproduces the problem:
--cut here--
<?php
        define("DEEPLIMIT",10); //maximal deep of recursive calls
/*
        !! please edit this settings !!
*/
        define("MYHOST","localhost");
        define("MYPORT","3306");
        define("MYUSER","YOUR_USERNAME");
        define("MYPWD","YOUR_PASSWORD");


        /* this function reproduces the error */
        function recursive($deep,$persistent=false) {
                if ($deep<=DEEPLIMIT) {
                        //down side
                        if ($persistent)
                                $db=mysql_pconnect(MYHOST.":".MYPORT,MYUSER,MYPWD); 
//creating persistent mysql connection and storing in a local variable
                        else
                                $db=mysql_connect(MYHOST.":".MYPORT,MYUSER,MYPWD); 
//creating mysql connection and storing in a local variable

                        $res=@mysql_query("select 1 as ONE",$db); //some dummy query
                        $mr=null;
                        if (@mysql_num_rows($res)) {
                                $mr=@mysql_fetch_array($res);
                        }
                        //and now write the result
                        printf("%sRecursive: Deep: %s, DownSideQuery: 
%s<br>\n",str_repeat(">",$deep),$deep,(int)$mr["ONE"]);

                        recursive($deep+1,$persistent);

                        //up side
                        $res=@mysql_query("select 1 as ONE",$db); //using previously 
created connection ($db), if exists ;)
                        $mr=null;
                        if (@mysql_num_rows($res)) {
                                $mr=@mysql_fetch_array($res);
                        }
                        //write result again
                        printf("%sRecursive: Deep: %s, UpSideQuery: 
%s",str_repeat(">",$deep),$deep,(int)$mr["ONE"]);
                        //error check
                        if (!(int)$mr["ONE"])
                                printf("&nbsp;&nbsp;<b>!?ERROR!? why 0?</b>");
                        printf("<br>\n");
                        @mysql_close($db); //closing mysql connection
                }
                else {
                        printf("Limit occured (%s). Turning back...<br>\n",DEEPLIMIT);
                }
        }

        echo "Trying with <b>mysql_connect()</b><br>\n";
        recursive(1);

        echo "<br><br>\n\n";
        echo "Trying with <b>mysql_pconnect()</b><br>\n";
        recursive(1,true);

?>
--cut here--

the output of the script:

Trying with mysql_connect()
>Recursive: Deep: 1, DownSideQuery: 1
>>Recursive: Deep: 2, DownSideQuery: 1
>>>Recursive: Deep: 3, DownSideQuery: 1
>>>>Recursive: Deep: 4, DownSideQuery: 1
>>>>>Recursive: Deep: 5, DownSideQuery: 1
>>>>>>Recursive: Deep: 6, DownSideQuery: 1
>>>>>>>Recursive: Deep: 7, DownSideQuery: 1
>>>>>>>>Recursive: Deep: 8, DownSideQuery: 1
>>>>>>>>>Recursive: Deep: 9, DownSideQuery: 1
>>>>>>>>>>Recursive: Deep: 10, DownSideQuery: 1
Limit occured (10). Turning back...
>>>>>>>>>>Recursive: Deep: 10, UpSideQuery: 1
>>>>>>>>>Recursive: Deep: 9, UpSideQuery: 1
>>>>>>>>Recursive: Deep: 8, UpSideQuery: 1
>>>>>>>Recursive: Deep: 7, UpSideQuery: 1
>>>>>>Recursive: Deep: 6, UpSideQuery: 1
>>>>>Recursive: Deep: 5, UpSideQuery: 0  !?ERROR!? why 0?
>>>>Recursive: Deep: 4, UpSideQuery: 0  !?ERROR!? why 0?
>>>Recursive: Deep: 3, UpSideQuery: 0  !?ERROR!? why 0?
>>Recursive: Deep: 2, UpSideQuery: 0  !?ERROR!? why 0?
>Recursive: Deep: 1, UpSideQuery: 0  !?ERROR!? why 0?


Trying with mysql_pconnect()
>Recursive: Deep: 1, DownSideQuery: 1
>>Recursive: Deep: 2, DownSideQuery: 1
>>>Recursive: Deep: 3, DownSideQuery: 1
>>>>Recursive: Deep: 4, DownSideQuery: 1
>>>>>Recursive: Deep: 5, DownSideQuery: 1
>>>>>>Recursive: Deep: 6, DownSideQuery: 1
>>>>>>>Recursive: Deep: 7, DownSideQuery: 1
>>>>>>>>Recursive: Deep: 8, DownSideQuery: 1
>>>>>>>>>Recursive: Deep: 9, DownSideQuery: 1
>>>>>>>>>>Recursive: Deep: 10, DownSideQuery: 1
Limit occured (10). Turning back...
>>>>>>>>>>Recursive: Deep: 10, UpSideQuery: 1
>>>>>>>>>Recursive: Deep: 9, UpSideQuery: 1
>>>>>>>>Recursive: Deep: 8, UpSideQuery: 1
>>>>>>>Recursive: Deep: 7, UpSideQuery: 1
>>>>>>Recursive: Deep: 6, UpSideQuery: 1
>>>>>Recursive: Deep: 5, UpSideQuery: 1
>>>>Recursive: Deep: 4, UpSideQuery: 1
>>>Recursive: Deep: 3, UpSideQuery: 1
>>Recursive: Deep: 2, UpSideQuery: 1
>Recursive: Deep: 1, UpSideQuery: 1


------------------------------------------------------------------------



ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=11993&edit=1


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to