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

Vin*_*tes 7 php pid process strace

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

我的脚本中的某些东西产生了高CPU使用率,如下所示: CPU使用率

当我去和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
Run Code Online (Sandbox Code Playgroud)

这在无限循环中连续重复.

我需要知道的是如何跟踪导致此问题的确切PHP脚本.有什么建议?

cha*_*aos 6

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


dav*_*ell 2

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

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

php_value auto_prepend_file append.php
Run Code Online (Sandbox Code Playgroud)