PHP getrusage()返回错误的信息?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP getrusage()返回错误的信息?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1759字,纯文字阅读大概需要3分钟。
内容图文
![PHP getrusage()返回错误的信息?](/upload/InfoBanner/zyjiaocheng/775/57f439ae6283494e9aac775337895fc5.jpg)
我正在尝试确定PHP脚本的CPU使用率.我刚刚找到this article,详细说明了如何查找系统和用户CPU使用时间(第4节).
但是,当我尝试这些例子时,我收到了完全不同的结果.
第一个例子:
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: 29.53
System time: 2.71
例2:
for($i=0;$i<10000000;$i++) {
}
// Same echo statements
结果:
User time: 16.69
System time: 2.1
例3:
$start = microtime(true);
while(microtime(true) - $start < 3) {
}
// Same echo statements
结果:
User time: 34.94
System time: 3.14
显然,除了第三个例子中的系统时间之外,没有一个信息是正确的.那么我做错了什么?我真的希望能够使用这些信息,但它需要可靠.
我正在使用Ubuntu Server 8.04 LTS(32位),这是php -v的输出:
PHP 5.2.4-2ubuntu5.10 with Suhosin-Patch 0.9.6.2 (cli) (built: Jan 6 2010 22:01:14)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
解决方法:
您可以使用系统’time’命令从外部验证此信息:
/usr/bin/time php script.php
这将打印如下:
0.03user 0.00system 0:03.04elapsed 0%CPU (0avgtext+0avgdata 32752maxresident)k
0inputs+0outputs (0major+2234minor)pagefaults 0swaps
当然,不要忘记getrusage()信息是使用的CPU时间,microtime()是挂钟时间.该程序可能会根据墙上的时钟运行10分钟,但内部可能只使用几秒钟的CPU时间.然后,在系统上运行的所有后台程序,资源争用以及常规内务处理争夺CPU时间.
能够在如此短的时间内获得准确的时间安排涉及太多因素.做了三次运行while(microtime())版本的循环,我得到了以下时间:
user:0.98,0.09,0.90
sys:0.12,0.05,0.94
显然差异很大.即使只是一个简单的<? print_r(getrusage())?> utime / stimes的范围从0到0.03.
尝试运行您的循环更长时间,并在其中执行一些操作以增加CPU使用率.现在你的数字太小而无法准确测量.
内容总结
以上是互联网集市为您收集整理的PHP getrusage()返回错误的信息?全部内容,希望文章能够帮你解决PHP getrusage()返回错误的信息?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。