From: alfa77 at gmail dot com
Operating system: Windows 2000
PHP version: 5.2.5
PHP Bug Type: MSSQL related
Bug description: mssql_connect fails sometimes
Description:
------------
Hello!
The number of my site users has recently increased and I have faced the
following bug:
mssql_connect function sometimes fails to connect to MSSQL. It works fine
for few hours,
then suddenly fails, and the work is resumed in a few minutes.
Here is the part of my DB class (CSql)
function connect_db($server, $user, $password)
{
$this->dbc=mssql_connect($server, $user, $password);
if(!$this->dbc) return false;
return true;
}
The warnings in Apache log are
[Thu Feb 21 20:50:58 2008] [error] [client 82.200.***.***] PHP Warning:
mssql_connect()
[<a href='function.mssql-connect'>function.mssql-connect</a>]: Unable to
connect to server:
****** in ******.php on line 22
When I reload the page on site, connection sometimes succeeds, sometimes
fails.
Web-server configuration: Windows 2000 Server (SP4) + Apache 2 + PHP
5.2.5. Peak usage
of CPUs is no more than 70%, RAM usage no more than 50%. There is a
program on this server
that works with MSSQL through ADO, and it never has connection problems.
There are no
connection problems from LAN too.
SQL Server 2000 (SP4) is working on dedicated server (Windows 2000 Server
(SP4))
which is connected to the web server by gigabit LAN. I have tested the
network adapters,
they work fine. CPUs usage is no more than 60%, RAM usage no more than
70%.
I have already:
1) replaced ntwdblib.dll in PHP directory with a new version. Also, I have
installed MDAC 2.81
2) moved SQL Server to a new, fast server.
3) tried to use mssql_connect or mssql_pconnect.
4) tried to use server name or server IP and port as the first parameter
for mssql_connect
5) tried to connect through TCP/IP or Named Pipes.
6) When I cycled connection attempts, it succeeded in connection almost
every time (usually
from the second or third attempt)
$db=new CSql;
$db_failed=1;
while(!$db->connect_db(DBHost, DBLogin, DBPassw))
{
if($db_failed>=5) break;
sleep(2);
$db_failed++;
}
if(!$db->dbc) die("DB connection failed!");
7) I checked the network connection by using sockets or ODBC when
mssql_connect had failed. It worked fine!
if(!fsockopen("192.168.0.3", 1433, $errno, $errstr, 10))
WrLog("C:\\sqlerr.txt","Err1 (($errstr ($errno)))");
if(!odbc_connect("sqlsrv",DBLogin, DBPassw))
WrLog("C:\\sqlerr.txt","Err2");
8) There are no connection limits in SQL Server or PHP.ini
[MSSQL]
mssql.max_persistent = -1
mssql.max_links = -1
I examined Apache logs few months ago, when MSSQL worked on the same
server with Apache.
There were no messages about connection problems.
--
Edit bug report at http://bugs.php.net/?id=44300&edit=1
--
Try a CVS snapshot (PHP 5.2):
http://bugs.php.net/fix.php?id=44300&r=trysnapshot52
Try a CVS snapshot (PHP 5.3):
http://bugs.php.net/fix.php?id=44300&r=trysnapshot53
Try a CVS snapshot (PHP 6.0):
http://bugs.php.net/fix.php?id=44300&r=trysnapshot60
Fixed in CVS: http://bugs.php.net/fix.php?id=44300&r=fixedcvs
Fixed in release:
http://bugs.php.net/fix.php?id=44300&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=44300&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=44300&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=44300&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=44300&r=support
Expected behavior: http://bugs.php.net/fix.php?id=44300&r=notwrong
Not enough info:
http://bugs.php.net/fix.php?id=44300&r=notenoughinfo
Submitted twice:
http://bugs.php.net/fix.php?id=44300&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=44300&r=globals
PHP 4 support discontinued: http://bugs.php.net/fix.php?id=44300&r=php4
Daylight Savings: http://bugs.php.net/fix.php?id=44300&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=44300&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=44300&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=44300&r=float
No Zend Extensions: http://bugs.php.net/fix.php?id=44300&r=nozend
MySQL Configuration Error: http://bugs.php.net/fix.php?id=44300&r=mysqlcfg