2012-11-21 137 views
0

我有一個PHP框架的Linux機器上運行basicly每個請求重定向通過.htaccess進行跟蹤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的的index.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

我只是找到我自己的問題,而我正在尋找這個問題。這一次我有一個答案。

如果你想看到通過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。

瞧過程使用大量的CPU和內存的Linux:

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

現在你將能夠看到流程

1

你可以使用firephp或日誌追加到Linux上的文件你想要一些指針或是足夠的信息?

+0

感謝的答案,但我最的進程正在運行通過cron沒有葉狀結束。添加附加日誌不是一個選項,我猜想,項目約百萬行,如果我沒有一個軌道,我不能添加日誌記錄到所有進度。 –