2010-05-05 84 views
1

我安装php 5(更确切地说5.3.1)作为apache模块。php脚本随机挂断

之后,我的一个应用程序变得随机挂在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解决了这个问题。

+0

任何错误消息中描述的问题连接? – Cesar 2010-05-05 18:29:21

+0

@Cesar我更新了帖子 – sergtk 2010-05-05 18:36:12

+0

MySQL服务器和php服务器在同一台机器上吗? – 2010-05-05 19:34:09

回答

1

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

+0

我更新了问题。不是这种情况。无论如何谢谢你的提示。 – sergtk 2010-05-05 22:05:18

+0

我想下一步应该从命令shell检查'netstat',看看是否有任何连接卡在等待状态(syn_sent,最有可能)。您可以尝试切换到使用本地套接字而不是TCP连接MySQL连接。 – 2010-05-06 03:22:53

+0

经过深入调查(这是不容易重现)在我看来,这个问题是没有连接mysql_connect – sergtk 2010-05-08 17:24:54

1

尝试找出问题:

  1. 关机都记录下来(阿帕奇MySQL的)。
  2. 将apache和mysql的日志记录级别提升到一个详细的级别(以便记录几乎所有内容)。
  3. 将调用mysql_connect的单个函数/一段代码从现有脚本中提取出来,并创建一个新脚本,该脚本除了查询mysql并返回结果外什么也不做。 (您也可以评论现有脚本中的所有内容)。
  4. 开始一切备份并在日志中查找任何不寻常的东西。
  5. 执行脚本并检查日志。速度慢吗?日志中有什么奇怪的东西?如果速度不慢,请从原始脚本开始添加/取消注释。它减慢了吗?日志中显示的是什么?