php进程数是指什么,25.查看php 某个服务的进程数

本文介绍了如何在PHP中使用exec函数执行ps命令获取特定服务(如httpd、mysqld)的进程数,通过实际代码演示了grep参数的选择,并解释了为何要减去grep自身进程。适合理解PHP进程监控的基本实践。
摘要由CSDN通过智能技术生成

查看进程就是使用ps命令而已,只不顾ps的参数太多了。

使用php查询的话,必须要开启几个函数(可以执行外部程序的函数),参考官网:http://php.net/manual/zh/book.exec.php

下面是在php进程中查询某个服务创建的进程数,比如httpd,mysqld,sshd.......

function query_process_num($service){

$res = array();

exec("ps -ef | grep " . $service ." | wc -l", $res);

return trim($res[0]) - 2;

}

echo query_process_num("httpd");

?>

至于为什么要减2,可以看下面的代码:

function query_process_num($service){

$res = array();

exec("ps -ef | grep " . $service, $res);

print_r($res);//不处理直接输出

unset($res);

exec("ps -ef | grep " . $service . " | wc -l", $res);

print_r($res);//统计输出

}

query_process_num("httpd");

?>

输出如下:

~/tmp/test $ ps -ef | grep httpd #命令行直接运行命令

92193 1 0 7:09下午 ?? 0:00.64 /usr/sbin/httpd -D FOREGROUND

92194 92193 0 7:09下午 ?? 0:00.00 /usr/sbin/httpd -D FOREGROUND

94092 70178 0 7:30下午 ttys002 0:00.01 grep httpd

~/tmp/test $ php index.php #使用php查询

Array

(

[0] => 0 92193 1 0 7:09下午 ?? 0:00.64 /usr/sbin/httpd -D FOREGROUND

[1] => 70 92194 92193 0 7:09下午 ?? 0:00.00 /usr/sbin/httpd -D FOREGROUND

[2] => 502 94109 94108 0 7:30下午 ttys002 0:00.00 sh -c ps -ef | grep httpd

[3] => 502 94111 94109 0 7:30下午 ttys002 0:00.00 grep httpd

)

Array

(

[0] => 4

)

可以从上面的运行结果中就可以知道为什么要减2

使用grep -v "grep"过滤掉

/**

* 是否有该进程执行中

* 有必须单进程允许的任务调用该方法判断

* @return boolean

*/

public function haveRun() {

if(YII_ENV==='dev'){

return false;

}

$name = trim($GLOBALS['argv'][1]);

$count = exec('ps -ax | grep "yii '.$name.'" | grep -v "grep"| wc -l');

echo "当前有".$count."进程,在执行中..请稍等....".PHP_EOL;

return $count > 1;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值