0

我有一个 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辅助| 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。但我必须找到这是哪个请求。

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

谢谢。

4

2 回答 2

1

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

于 2012-11-21T17:46:13.147 回答
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上的top index.php。

查看进程在 linux 上使用最多的 cpu 和内存:

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

现在您将能够看到进程

于 2016-10-27T11:47:14.960 回答