分享几个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 ) */ Copier après la connexion 解释: 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 */ Copier après la connexion 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 */ Copier après la connexion 以上代码的运行,大约消耗了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 */ Copier après la connexion 以上示例,展示了更高级别的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%的解决方法 |