>  기사  >  백엔드 개발  >  CPU 사용량을 얻는 PHP 코드

CPU 사용량을 얻는 PHP 코드

WBOY
WBOY원래의
2016-07-25 08:57:033772검색
分享几个php代码,用来获取当前系统中cpu的使用情况,有需要的朋友作个参考吧。

在php中,可以使用getrusage()获取CPU的使用情况,该方法仅适用于linux系统。 例子:

<?php
//获取cpu使用情况
print_r(getrusage());  
/* 输出 
Array 
( 
[ru_oublock] => 0 
[ru_inblock] => 0 
[ru_msgsnd] => 2 
[ru_msgrcv] => 3 
[ru_maxrss] => 12692 
[ru_ixrss] => 764 
[ru_idrss] => 3864 
[ru_minflt] => 94 
[ru_majflt] => 0 
[ru_nsignals] => 1 
[ru_nvcsw] => 67 
[ru_nivcsw] => 4 
[ru_nswap] => 0 
[ru_utime.tv_usec] => 0 
[ru_utime.tv_sec] => 0 
[ru_stime.tv_usec] => 6269 
[ru_stime.tv_sec] => 0 
) 
*/

解释: ru_oublock: 块输出操作 ru_inblock: 块输入操作 ru_msgsnd: 发送的message ru_msgrcv: 收到的message ru_maxrss: 最大驻留集大小 ru_ixrss: 全部共享内存大小 ru_idrss:全部非共享内存大小 ru_minflt: 页回收 ru_majflt: 页失效 ru_nsignals: 收到的信号 ru_nvcsw: 主动上下文切换 ru_nivcsw: 被动上下文切换 ru_nswap: 交换区 ru_utime.tv_usec: 用户态时间 (microseconds) ru_utime.tv_sec: 用户态时间(seconds) ru_stime.tv_usec: 系统内核时间 (microseconds) ru_stime.tv_sec: 系统内核时间?(seconds) 有时需要查看脚本消耗了多少CPU,需要看看“用户态的时间”和“系统内核时间”的值。 秒和微秒部分是分别提供的,可以把微秒值除以100万,并把它添加到秒的值后,可以得到有小数部分的秒数。 例子:

<?php
// sleep for 3 seconds (non-busy)  
sleep(3);  
$data = getrusage();  
echo “User time: “.  
($data['ru_utime.tv_sec'] +  
$data['ru_utime.tv_usec'] / 1000000);  
echo “System time: “.  
($data['ru_stime.tv_sec'] +  
$data['ru_stime.tv_usec'] / 1000000);  
/* 输出 
User time: 0.011552 
System time: 0 
*/

sleep是不占用系统时间的,例子:

<?php
// loop 10 million times (busy)  
for($i=0;$i<10000000;$i++) {  
}  
$data = getrusage();  
echo “User time: “.  
($data['ru_utime.tv_sec'] +  
$data['ru_utime.tv_usec'] / 1000000);  
echo “System time: “.  
($data['ru_stime.tv_sec'] +  
$data['ru_stime.tv_usec'] / 1000000);  
/* 输出 
User time: 1.424592 
System time: 0.004204 
*/

以上代码的运行,大约消耗了14秒的CPU时间,几乎所有的都是用户的时间,因为没有系统调用。 系统时间是CPU花费在系统调用上的上执行内核指令的时间。 例子:

<?php
$start = microtime(true);  
// keep calling microtime for about 3 seconds  
while(microtime(true) – $start < 3) {  
}  
$data = getrusage();  
echo “User time: “.  
($data['ru_utime.tv_sec'] +  
$data['ru_utime.tv_usec'] / 1000000);  
echo “System time: “.  
($data['ru_stime.tv_sec'] +  
$data['ru_stime.tv_usec'] / 1000000);  
/* prints 
User time: 1.088171 
System time: 1.675315 
*/

以上示例,展示了更高级别的cpu消耗。 您可能感兴趣的文章: php的file_get_contents导致cpu飙升问题的解决方法 php获取CPU使用情况的代码 php中使用proc/loadavg监控CPU的平均负载 php记录服务器负载、内存、cpu状态的代码 php页面缓存的例子(减经cpu与mysql负担) php获取cpu与内存使用情况的代码一例 php获取linux服务器CPU、内存、硬盘使用率的实现代码 php获取计算机唯一标识信息(cpu,网卡,MAC地址)的代码 PHP-CGI 进程 CPU 100% 与 file_get_contents 函数的关系 php程序随机记录mysql rand()造成CPU 100%的解决方法



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.