1

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.

3
  • Is the mysql server on the same machine as the php server? Commented May 5, 2010 at 19:34
  • @adam yes, all are on the same local host Commented May 8, 2010 at 17:29
  • do you think that that timeout is from mysql or from php ? try to use set_time_limit(0); Commented May 9, 2010 at 8:40

3 Answers 3

1

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.

Sign up to request clarification or add additional context in comments.

3 Comments

I updated the question. This is not the case. Anyway thanks for note.
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.
after deeper investigation (it is not easy to reproduce) it seems to me that the problem is not connected with mysql_connect
1

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?

Comments

1

It is connected with the issue described at Did I find a bug in PHP's `crypt()`?

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.