如何跟踪运行给定进程的PHP脚本?

时间:2012-06-28 20:44:09

标签: php process strace pid

我有一个网站,其中包含在VPS托管服务上运行的自定义脚本。 所有脚本都通过index.php使用mod_rewrite和.htaccess进行友好URL

我的脚本中的某些内容正在产生高CPU使用率,如下所示: CPU usage

当我去strace给定的过程时,我得到了这个我不理解的内容:

    setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={90, 0}}, NULL) = 0
    rt_sigaction(SIGPROF, {0x7a6b8f, [PROF], SA_RESTORER|SA_RESTART, 0x2af8ae8742f0}, {0x7a6b8f, [PROF],    SA_RESTORER|SA_RESTART, 0x2af8ae8742f0}, 8) = 0
    rt_sigprocmask(SIG_UNBLOCK, [PROF], NULL, 8) = 0

这是在无限循环中连续重复的。

我需要知道的是如何找到导致此问题的确切PHP脚本。有什么建议吗?

2 个答案:

答案 0 :(得分:6)

如果您可以在PHP安装中获得the PECL proctitle package,则可以使用它来使index.php将其进程标题设置为其传递给的脚本的名称。 (更改的流程标题可能会或可能不会显示在特定的流程表可视化工具中;如果所有其他方法都失败,则使用ps。)

答案 1 :(得分:2)

在脚本中使用getmypid()函数。只需将其输出到日志文件或其他东西,看看哪个脚本是哪个。

编辑: 使用auto_prepend_file配置设置自动将此代码段包含在所有文件中:

php_value auto_prepend_file append.php