我有一个php框架在linux机器上基本运行每个请求重定向到.htaccess
的index.phpOptions +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我必须找到这个请求。
有没有办法调试这个问题?
感谢。
答案 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
现在您将能够看到流程