|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2005-11-19 14:18 UTC] dgrimes at scvl dot com
Description:
------------
I am having random failure on making a connection to MySQL. This the code used to make the connection and has been for several years.
if (!$this->linkid = mysql_connect($this->host,$this->user,$this->pass))
DBError(mysql_errno(),mysql_error(),"LINKID-$db",$this->mailerr,$this->sendto);
The following error is returned randomly however it happens usually right after starting apache or after a period of inactivity:
2002 - Can't connect to local MySQL server through socket '/d/mysql/var/mysql.so
ck' (-2146870980)
Starting with version PHP 4.3.0 is when the problem started. Version 4.2.x does not have this problem. I compiled every version until I found where the problem started. I am currently trying to move from 4.0.6 to 4.4.1 but need to get this issue addressed.
My system:
SCO OpenServer 5.0.4 and 5.0.6
MySQL 4.1.15
Apache 1.3.34
Reproduce code:
---------------
if (!$this->linkid = mysql_connect($this->host,$this->user,$this->pass))
DBError(mysql_errno(),mysql_error(),"$this->linkid LINKID-$db",$this->m
ailerr,$this->sendto);
Expected result:
----------------
I expected to get a resource ID returned.
Actual result:
--------------
2002 - Can't connect to local MySQL server through socket '/d/mysql/var/mysql.so
ck' (-2146870980)
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Dec 02 21:00:01 2025 UTC |
Here is what I've found so far. There is a new call to a function called mysql_options in the php_mysql_do_connect funciton. When I comment that out, everthing works OK: mysql = (php_mysql_conn *) emalloc(sizeof(php_mysql_conn)); mysql->active_result_id = 0; #if MYSQL_VERSION_ID > 32199 /* this lets us set the port number */ mysql_init(&mysql->conn); fprintf(xfp,"connect_timeout: %ld\n",connect_timeout); RIGHT HERE: Line 778 in ext/mysql/php_mysql.c if (connect_timeout != -1) mysql_options(&mysql->conn, MYSQL_OPT_CONNECT_TIMEOUT, (const char * )&connect_timeout); If I comment that line then everything works. Another thing, I tried setting the timeout value to -1 in php.ini file but it's ignored in program. It always has a value of 60. I have verified that the correct php.ini file is being read. mysql_real_connect returns NULL after setting mysql_options has executed. The MySQL version I'm using is 4.1.16. if (mysql_real_connect(&mysql->conn, host, user, passwd, NULL, port, socke t, client_flags)==NULL) { #else if (mysql_connect(&mysql->conn, host, user, passwd)==NULL) { #endif /* Populate connect error globals so that the error functions can read them */ if (MySG(connect_error)!=NULL) efree(MySG(connect_error)); MySG(connect_error)=estrdup(mysql_error(&mysql->conn)); php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", MySG(connect_error)); #if defined(HAVE_MYSQL_ERRNO) MySG(connect_errno)=mysql_errno(&mysql->conn); #endif Is it possible that you guys could look at this from this point? If you need me to do anything just let know. Thanks, Dean