ps aux | grep php ---检查GET参数

时间:2012-07-22 15:42:39

标签: php shell process

我的网站有一个自制的“流程管理器”,只需解析shell命令
ps aux | grep php

这对于查看php进程是否占用太多CPU或MEM非常有用。但是,有时候我会看到一些PHP进程延迟完成一些时间。问题是,这并没有告诉我太多:

/usr/bin/php /home/mysite/public_html/process.php

因为,一个进程可能依赖于它收到的很多GET参数。

所以,我的问题是,是否可以知道PHP进程接收的GET参数是什么?

谢谢。

4 个答案:

答案 0 :(得分:3)

您可以使用proctitle更改php进程的名称以包含GET查询字符串,假设您使用的是Linux或BSD系统。

答案 1 :(得分:0)

唯一的问题是GET参数只有在通过您的Web服务器而不是命令行调用时才传递到您的脚本,在您的情况下,您只能获得ARGS。

你总是可以做一个grep:

$ ps -auwwwx | grep my_php_script

在命令行脚本中查看ARG

答案 2 :(得分:0)

如果有人需要回答这个问题,我可以将命令从apache服务器发送到ubuntu控制台,只需: 在sudoers文件中添加www-data用户权限。

  

www-data ALL =(ALL)NOPASSWD:ALL

并从php文件执行命令

$comand2=  shell_exec('sudo -S service cron restart 2>&1' );
echo "<pre> $comand2 $</pre>";

答案 3 :(得分:0)

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

setproctitle()函数。

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

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

我用来跟踪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

现在您将能够看到流程