#26490 [Com]: Lost connection to MySQL server during query

From: Date: Thu, 14 Apr 2005 14:38:05 +0000
Subject: #26490 [Com]: Lost connection to MySQL server during query
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-77532@lists.php.net to get a copy of this message
ID: 26490 Comment by: Andreas dot Oesterhelt at InTradeSys dot com Reported By: chris dot noden at monstermob dot com Status: No Feedback Bug Type: MySQL related Operating System: * PHP Version: 4CVS, 5CVS (2004-03-13) New Comment: As requested by theseer @php.net I'm adding a test case that steadily reproduces the problem for me. Both on a Single CPU Pentium 4, Linux 2.4.29, PHP 4.3.10, MySQL 4.1.10, libc 2.2.5 machine, as well as on a four CPU Ultra Sparc, Linux 2.4.27, PHP 4.3.10, MySQL 4.1.10a, libc 2.3.2 box I get the same results. The proposed workaround doesn't change that behaviour. The example code assumes there is a database testcasedb, to which a user testcaseuser on localhost using testcasepw has access. It needs to contain a table like this, although the table type really doesn't seem to matter: CREATE TABLE testtable (row1 varchar(40) NOT NULL default '', tstamp timestamp NULL default NULL) DEFAULT CHARSET=latin1 ; <?php $dbres = mysql_connect('localhost', 'testcaseuser', 'testcasepw'); $parent_sql = "INSERT INTO testcasedb.testtable VALUES ('some test', now())"; $child_sql = "DELETE FROM testcasedb.testtable WHERE row1 = 'some test'"; do { for ($i = 1; $i <= 20; $i++) { print("Parent query starts\n"); if (!mysql_query($parent_sql, $dbres)) { print("Parent Mysql Error: " . mysql_error($dbres) . "\n"); } } $is_child = pcntl_fork(); if ($is_child > 0) { print("Child connection and query start\n"); $dbres = mysql_connect('localhost', 'testcaseuser', 'testcasepw', true); if (!mysql_query($child_sql, $dbres)) { print("Child Mysql Error: " . mysql_error($dbres) . "\n"); } exit; } print("Parent next iteration\n"); } while (true); ?> Basically the parent process loops forever, spawning children that each open a connection of their own, do a query and then die. You'll see that the parent will report Lost connections soon, although the children are doing their best not to reuse the parent's connection. Hope this helps to deeper look into the issue. Thanks for listening, --Andreas Previous Comments: ------------------------------------------------------------------------ [2004-10-01 01:00:02] php-bugs at lists dot php dot net No feedback was provided for this bug for over a week, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open". ------------------------------------------------------------------------ [2004-09-23 12:05:07] theseer@php.net Due to people claiming the "workaround" doesn't fix their problems, the bug is reopened. Please provide detailed feedback on how to reproduce the problem. ------------------------------------------------------------------------ [2004-09-22 21:06:23] tru at gtwreck dot com All you need to do is check out this query on google, and you can see that a lot of sites have this issue while google is indexing them... http://www.google.com/search?hl=en&lr=&ie=UTF-8&q=%22Lost+connection+to+MySQL+server+during+query%22+mysql_connect ------------------------------------------------------------------------ [2004-09-22 21:03:00] tommy at allstardirectories dot com The suggested work-around does not work for me. I'm still seeing intermittent connection losses (About 5-10 per day). ------------------------------------------------------------------------ [2004-08-12 19:20:53] theseer@php.net This is not a bug at all but rather a problem created by the reuse of connections within php: The mysql_connect() command does NOT open a new connection by default. So even if one calls mysql_connect() in the forked child, no new conenction is opened. Adding the addtional parameter to force a new connection fixes the problem right away. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/26490 -- Edit this bug report at http://bugs.php.net/?id=26490&edit=1

« previous php.bugs (#77532) next »