跟踪框架上的php进程

时间:2012-11-21 17:43:18

标签: php linux debugging process

我有一个php框架在linux机器上基本运行每个请求重定向到.htaccess

的index.php
Options +FollowSymLinks

IndexIgnore */*
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*jpg$|!.*gif$|!.*png$|!.*jpeg$|!.*bmp$


RewriteRule . index.php

我的一个php开始运行%100 CPU我想跟踪哪个进度但当我检查进程时

ps aux | grep 23791

user 23791  0.3  0.8  30460 15288 ?        S    12:32   0:01 /usr/bin/php /home/user/public_html/index.php

正常情况下,请求重定向到index.php.But我必须找到这个请求。

有没有办法调试这个问题?

感谢。

2 个答案:

答案 0 :(得分:1)

你可以使用firephp或log来附加到linux上的文件你想要一些指针还是足够的信息?

答案 1 :(得分:0)

我在解决这个问题的过程中遇到了自己的问题。这次我有一个答案。

如果你想通过ps查看linux控制台进度的详细信息,你必须使用proctitle这个pecl扩展程序会给你

setproctitle()函数。

扩展程序非常老,但即使在zts模式下也能正常工作。

如果您使用的是cli版本,可以使用:cli-set-process-title()这是本机php函数(版本PHP5> =)

我用来跟踪linux的简单代码:

<?
if ((PHP_SAPI === 'cli' OR defined('STDIN'))) {
    $tmp = $_SERVER["argv"];
    unset($tmp[0]);
    $text =  "/". implode('/',$tmp);
    @cli_set_process_title (urldecode($text));
} else {
    @setproctitle (urldecode($_SERVER["REQUEST_URI"]));
}
?>

我只是将它写在codeigniter上的index.php上。

要查看进程在linux上使用大多数cpu和内存:

ps o pid,stat,time,pcpu,pmem,cmd -C php --sort -pcpu

现在您将能够看到流程