我的网站有一个自制的“流程管理器”,只需解析shell命令
ps aux | grep php
这对于查看php进程是否占用太多CPU或MEM非常有用。但是,有时候我会看到一些PHP进程延迟完成一些时间。问题是,这并没有告诉我太多:
/usr/bin/php /home/mysite/public_html/process.php
因为,一个进程可能依赖于它收到的很多GET参数。
所以,我的问题是,是否可以知道PHP进程接收的GET参数是什么?
谢谢。
答案 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
现在您将能够看到流程