7

我有一个与数据库交互的应用程序。突然间,有时,页面Server connection Reset在我的 Web 浏览器中显示错误。更令人惊讶的是,在localhost页面上访问会触发 avast 上的警报。

如果我使用 刷新页面Ctrl+R,它偶尔会发生。PHP 没有显示任何错误消息,而且服务器似乎比平时花费了更多的时间来响应。

我将 wamp 与 apache 2.4、PHP 5.4.3 一起使用。我不知道从哪里开始调试或问题出在哪里。

[Sun May 13 13:01:14 2012] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sun May 13 13:01:14 2012] [notice] Apache/2.2.22 (Win32) mod_ssl/2.2.22 OpenSSL/0.9.8x configured -- resuming normal operations
[Sun May 13 13:01:14 2012] [notice] Server built: May 13 2012 12:51:11
[Sun May 13 13:01:14 2012] [notice] Parent: Created child process 3660
Apache server interrupted...
arn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sun May 13 13:01:15 2012] [notice] Child 3660: Child process is running
[Sun May 13 13:01:15 2012] [notice] Child 3660: Acquired the start mutex.
[Sun May 13 13:01:15 2012] [notice] Child 3660: Starting 64 worker threads.
[Sun May 13 13:01:15 2012] [notice] Child 3660: Starting thread to listen on port 80.
[Sun May 13 13:01:15 2012] [notice] Child 3660: Starting thread to listen on port 80.
[Sun May 13 13:01:28 2012] [notice] Parent: Received shutdown signal -- Shutting down the server.
[Sun May 13 13:01:28 2012] [notice] Child 3660: Exit event signaled. Child process is ending.
[Sun May 13 13:01:29 2012] [notice] Child 3660: Released the start mutex
[Sun May 13 13:01:30 2012] [notice] Child 3660: All worker threads have exited.
[Sun May 13 13:01:30 2012] [notice] Child 3660: Child process is exiting
[Sun May 13 13:01:30 2012] [notice] Parent: Child process exited successfully.

更新:

当使用“连接请求”时,cachegrind它会显示方法调用堆栈的部分列表。意味着它不会运行所有代码。它显示了一些 require_once 调用和它。下次如果我重试获取页面,页面将执行并显示整个调用堆栈。

当“发生连接请求”时,它显示

18 different functions called in milliseconds (1 runs, 18 shown)

重试后

220 different functions called in 329 milliseconds (2 runs, 220 shown)

我不知道为什么它显示 2 次运行。执行页面也需要更多时间。在它完成之前不到 100 毫秒。

4

8 回答 8

1
  1. 重新启动您的计算机并关闭/禁用所有正在运行的应用程序,包括防病毒软件,只保留最小的一组正在运行的应用程序。关闭所有内容,即使是您确定无法干扰的应用程序 - 您永远不知道..

  2. 确保 PHP 显示所有错误/警告:

    error_reporting(E_ALL);
    ini_set('display_errors', '1');
    

确保查看从 PHP 收到的每个警告。它可能会给你一个线索。

  1. 尝试隔离问题。注释一段您怀疑会导致问题的代码。继续评论直到停止收到错误。然后开始取消注释,直到找到有问题的地方。这样你可以隔离有问题的代码,一旦你看到它,你就可以理解问题所在。

  2. 添加大量将写入日志文件(或只是回显)的语句。然后您可以分析日志文件并了解错误发生的时间点,从而帮助您隔离问题......

最终,您将找到有问题的代码块,并能够跟踪问题。希望 :)

于 2013-04-22T17:37:42.577 回答
0

将 apache 监听端口从 80 更改为8080 文件httpd.conf,更改并重新启动 apachelisten 80listen 8080

于 2013-04-18T13:47:38.520 回答
0

也许这不是一个正确的解决方案,但为什么不尝试其他 WAMP 版本或者正确设置您的系统时钟?您是否尝试过以最低配置运行 Apache?您可以禁用所有扩展和模块(包括 php 本身),如果 Web 服务器按预期工作,您可以逐个打开模块。我不了解您的环境,但您也可以尝试将工作线程数和其他值更改为最小。我敢打赌它没有帮助,但至少你会尝试。

于 2013-04-22T15:50:48.487 回答
0

重新尝试暂时禁用防病毒软件

于 2013-04-18T15:00:22.833 回答
0

看起来其他一些人在使用 Wamp 时遇到了同样的问题:您是否已经阅读了这篇属于官方论坛的帖子中列举的每个要点:

http://forum.wampserver.com/read.php?2,67660

于 2013-04-22T18:38:03.397 回答
0

通过 PHP 重新启动 Apache 使用 PHP 中的以下代码

exec('/etc/init.d/httpd graceful');

并查看手册...并更改 httpd 的路径

于 2013-04-18T12:55:55.773 回答
0

如果您启用了 mod_security,请尝试禁用并查看是否会发生同样的情况.. 有时您可能会过度警惕 mod_security,这只会导致 http 失败(有时就像将带有 & 符号的数据插入数据库一样简单)并且不会写入服务器日志中的任何错误使其难以排除故障,听起来与您遇到的类似,我将禁用 mod_security 重新启动服务器并查看行为是否已停止!

于 2013-04-22T17:57:59.323 回答
0

你确定你没有包含/要求循环吗?

这种循环使 PHP 消耗了太多的内存,而 apache 会杀死自己来避免它。

或者可能是某种 404 循环错误……如果有时出现 404 错误,就会发生这种循环。这是一个例子:

您有一个缺少图像的布局,因此会触发 404 错误。为了显示页面,404 错误会在包含丢失图像的错误页面周围添加布局,这会触发另一个 404 错误。

希望有帮助。

于 2013-07-08T13:22:28.427 回答