tags:

views:

138

answers:

3

I install php 5 (more precisely 5.3.1) as apache module.

After this one of my application becomes randomly hang up on mysql_connect - sometimes works, sometimes no, sometimes reload of page helps.

How can this be fixed?

I use Windows Vista, Apache/2.2.14 (Win32) PHP/5.3.1 with php module, MySql 5.0.67-community-nt.

After a minute I obtain the error message:

Fatal error: Maximum execution time of 60 seconds exceeded in path\to\mysqlcon.php on line 9

I run MySql locally and heavy load could not be a reason:

SHOW PROCESSLIST shows about 3 process

SHOW VARIABLES LIKE 'MAX_CONNECTIONS' is 100.

UPDATE:

At first I thought that this is connected with mysql_connect. But now I can't say for certain.

More difficult thing is when I insert the line to debug:

$fh = fopen("E://_debugLog", 'a'); fwrite($fh, __FILE__ . " : " . __LINE__ . "\n"); fclose($fh);

script start working near that location as a rule.

Restart of apache resolve the issue.

+1  A: 

You may be hitting the MySQL connection limit, and the script attempting to connect will spin its wheels until a connection is made available, but runs into the max execution time limit before that happens. When you hit one of these long pauses, hop into the mysql monitor and do SHOW PROCESSLIST, which will list all connections to the server. You can retrieve the connection limit with SHOW VARIABLES LIKE 'MAX_CONNECTIONS'. If the number of active processes is close to or at the max_connections value, that's your problem.

Marc B
I updated the question. This is not the case. Anyway thanks for note.
sergdev
I guess next step would be check 'netstat' from a command shell and see if there's any connections stuck in a wait state (syn_sent, most likely). You could try switching to using a local socket for the MySQL connection instead of TCP.
Marc B
after deeper investigation (it is not easy to reproduce) it seems to me that the problem is not connected with mysql_connect
sergdev
A: 

Try to isolate the problem:

  1. Shut everything down (apache mysql).
  2. Bump the logging levels of apache and mysql to a detailed level (so that you're logging almost everything).
  3. Pull the single function/piece of code that calls mysql_connect out of your existing script and create a new script that does nothing else but query mysql and return the results. (You can also comment everything out of your existing script).
  4. Start everything back up and look in the logs for anything out of the ordinary.
  5. Execute your script and examine the logs. Was it slow? Anything weird in the logs? If it wasn't slow, start adding in/uncommenting things from your original script. Does it slow down? What is showing up in the logs?
labratmatt
A: 

It is connected with the issue described at http://stackoverflow.com/questions/2699629/did-i-find-a-bug-in-phps-crypt

sergdev