【问题标题】:How to troubleshoot PHP processes如何对 PHP 进程进行故障排除
【发布时间】:2009-07-22 21:32:29
【问题描述】:

我用 PHP 为一家做一些事情的小商店构建了一个脚本。

启动数据库连接,并查询数据库几次。 读/写会话 使用 fsockopen() 向 PayPal PDT 发出请求 解析结果 将订单保存到数据库

经过一些测试,服务器停止加载。 支持让我知道有 20 个 PHP 进程正在运行(这是限制) 由于某种原因,它们没有正确关闭

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
bobbysue 970 0.0 0.1 23836 8708 ? S 15:46 0:00 /usr/local/bin/php5.cgi index.php
bobbysue 1574 0.0 0.1 23836 8708 ? S 15:47 0:00 /usr/local/bin/php5.cgi index.php
bobbysue 2328 0.0 0.1 23840 8708 ? S 15:47 0:00 /usr/local/bin/php5.cgi index.php
bobbysue 4031 0.0 0.1 23836 8704 ? S 15:49 0:00 /usr/local/bin/php5.cgi index.php
bobbysue 7112 0.0 0.1 23836 8708 ? S 15:51 0:00 /usr/local/bin/php5.cgi index.php...

1) 如何对脚本进行故障排除以查看问题可能出在哪里? 2)如何确保启动的进程正确终止? 谢谢 丰富

【问题讨论】:

  • 很好地开始获取您需要的信息 - 到目前为止,我对 3 个答案投了赞成票,他们每个人都添加了一些东西。

标签: php process


【解决方案1】:

您可以使用 PHP 调试器。

DBG 是一个相当不错的。我使用 PHPEd,但我相信 DBG 也会以其他方式工作。

http://www.php-debugger.com/dbg/

http://www.php-debugger.com/dbg/installation.php

http://www.nusphere.com/products/php_debugger.htm

还有一些其他不错的免费或近乎免费的 PHP 调试选项:

http://www.google.com/search?client=opera&rls=en&q=php+debugger&sourceid=opera&ie=utf-8&oe=utf-8

或者,如果这些是守护进程,或者不在浏览器中运行,您可能不得不将信息写入日志文件。我不确定它们是否可以调试 - 检查谷歌。

编辑

根据评论建议,XDebug 看起来也不错。

http://xdebug.org/docs/

更新 2

看来您现在也可以使用 dbg 调试 php-cli。

【讨论】:

  • 带有 XDebug 的 NetBeans 在 Ubuntu 上运行良好;对于 WinXP,它是 PHPDesigner
【解决方案2】:

LOP。

大量的打印语句。找出应用程序挂在哪里并在那里处理它。如果脚本与终端/apache 进程断开连接,您可以让脚本写入日志文件。

当然,调试器也可以很好地解决这个问题;)

【讨论】:

    【解决方案3】:

    我正在使用带有执行跟踪的 Xdebug,非常易于设置和使用

    生成跟踪可能需要一些时间,而且会很长,但如果成功,请隔离怀疑行为不良的代码,这会更容易。 Xdebug and execution trace

    另一个很酷的事情是,您可以进行性能检查并查看 zend 引擎在代码中的哪些位置花费了很长时间:

    Xdebug and Profiling

    在 google 上有很多关于如何使用 Xdebug 的教程。

    一般来说,在 PHP 上使用套接字时,可能会出现很多问题。根据脚本运行的服务器以及它的配置方式,目标服务器是否会发回正确的答案,是否需要设置超时?检查您是否遵循 paypal 的 API。

    如果是外部/环境问题,您最终可能会花费很长时间来调试原本完美无缺的代码;)

    【讨论】:

      猜你喜欢
      • 2011-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-18
      • 2023-04-07
      相关资源
      最近更新 更多