代码之家  ›  专栏  ›  技术社区  ›  sergtk

PHP脚本随机挂起

  •  1
  • sergtk  · 技术社区  · 14 年前

    我将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 回复  |  直到 14 年前
        1
  •  1
  •   Marc B    14 年前

    您可能达到了MySQL连接限制,并且尝试连接的脚本将旋转其轮子,直到连接可用,但在这之前会达到最大执行时间限制。当你点击其中一个长时间的停顿时,跳到MySQL监视器并做 SHOW PROCESSLIST ,它将列出与服务器的所有连接。您可以使用 SHOW VARIABLES LIKE 'MAX_CONNECTIONS' . 如果活动进程的数量接近或达到最大连接值,这就是您的问题。

        2
  •  1
  •   labratmatt    14 年前

    尝试隔离问题:

    1. 关闭所有内容(apache mysql)。
    2. 将Apache和MySQL的日志记录级别提升到一个详细的级别(这样您就可以记录几乎所有的内容)。
    3. 从现有脚本中提取调用mysql_connect的单个函数/代码段,创建一个只执行查询mysql的新脚本并返回结果。(您还可以对现有脚本中的所有内容进行注释)。
    4. 开始备份所有内容,并在日志中查找异常的内容。
    5. 执行脚本并检查日志。慢吗?日志里有什么奇怪的东西吗?如果速度不慢,就从原始脚本开始添加/取消注释内容。速度慢了吗?日志中显示了什么?
        3
  •  1
  •   Community Jaime Torres    7 年前

    它与以下描述的问题有关: Did I find a bug in PHP's `crypt()`?