php脚本随机挂起

时间:2010-05-05 18:24:23

标签: php apache

我将php 5(更确切地说是5.3.1)安装为apache模块。

在我的一个应用程序随机挂起mysql_connect之后 - 有时可以工作,有时候没有,有时会重新加载页面帮助。

如何解决这个问题?

我使用Windows Vista,Apache / 2.2.14(Win32)PHP / 5.3.1和php模块,MySql 5.0.67-community-nt。

一分钟后,我收到错误消息:

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

我在本地运行MySql,重负载不是原因:

SHOW PROCESSLIST显示了大约3个流程

SHOW VARIABLES LIKE 'MAX_CONNECTIONS'是100。

更新

起初我以为这与mysql_connect有关。 但现在我无法肯定地说。

当我将该行插入调试时,更困难的是:

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

脚本作为规则在该位置附近开始工作。

重启apache解决了这个问题。

3 个答案:

答案 0 :(得分:1)

您可能正在达到MySQL连接限制,尝试连接的脚本将旋转其轮子,直到连接可用,但在此之前运行到最大执行时间限制。当您遇到其中一个长暂停时,跳进mysql监视器并执行SHOW PROCESSLIST,它将列出与服务器的所有连接。您可以使用SHOW VARIABLES LIKE 'MAX_CONNECTIONS'检索连接限制。如果活动进程的数量接近或处于max_connections值,那就是你的问题。

答案 1 :(得分:1)

尝试隔离问题:

  1. 关闭所有内容(apache mysql)。
  2. 将apache和mysql的日志记录级别提升到详细级别(这样您几乎可以记录所有内容)。
  3. 从现有脚本中拉出调用mysql_connect的单个函数/代码片段,并创建一个新脚本,除了查询mysql并返回结果之外别无其他操作。 (您也可以对现有脚本中的所有内容进行评论。)
  4. 重新启动所有内容,查看日志中的任何异常情况。
  5. 执行脚本并检查日志。它慢了吗?日志中有什么奇怪的东西吗?如果速度不慢,请从原始脚本开始添加/取消注释。它减慢了吗?日志中出现了什么?

答案 2 :(得分:1)

它与Did I find a bug in PHP's `crypt()`?

中描述的问题有关