我有一个 PHP 脚本,我们每隔几分钟通过一个 cron 条目运行一次,并且时不时地(大约每周一次)而不是正常结束,它保持运行,占用 100% 的 CPU 核心(我' m假设,无限循环)
查看代码并“思考”它,我找不到发生这种情况的任何原因,但确实如此。到目前为止,当我得到 3 个或更多时,我会杀死它们,这解决了 CPU 问题,但我想对此做点什么......
有没有什么方法可以转储一个进程,或者用调试器附加到它,这样我就可以知道一些,任何它在做什么? (它在哪一行 PHP 上会有很大的帮助)。我不介意当我转储时进程是否终止,或其他任何事情。
这是一个 PHP 脚本,在 CentOS 5.6 机器上从命令行运行,我是 *nix 的大菜鸟,所以如果你能给我一些傻瓜教程太棒了。
谢谢! 丹尼尔
最佳答案
我不知道如何将调试器附加到尚未专门准备好 PHP 调试扩展(例如 xdebug)的 PHP 进程。但是,您可以使用更通用的实用程序 strace
来猜测正在发生的事情,它可以提供进程正在运行的系统调用的踪迹。这只会告诉您正在执行哪些系统调用,但这可能足以(取决于上下文)确定发生了什么。
关于php - 是否可以将调试器附加到正在运行的 PHP 进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7604796/