php的真正威力源自于它的函数,但有些PHP函数并没有得到充分的利用,也并不是所有人都会从头到尾一页一页地阅读手册和函数参考,这里将向您介绍这些实用的函数和功能。
3、内存使用信息
通过侦测脚本的内存使用情况,有利于代码的优化。PHP提供了一个垃圾收集器和一个非常复杂的内存管理器。脚本执行时所使用的内存量,有升有跌。为了得到当前的内存使用情况,我们可以使用memory_get_usage()函数。如果需要获得任意时间点的最高内存使用量,则可以使用memory_limit()函数。
- 以下为引用的内容:
-
- echo"Initial:".memory_get_usage()."bytes\n";
- /*prints
- Initial:361400bytes
- */
-
- //let’suseupsomememory
- for($i=0;$i<100000;$i++){
- $array[]=md5($i);
- }
-
- //let'sremovehalfofthearray
- for($i=0;$i<100000;$i++){
- unset($array[$i]);
- }
-
- echo"Final:".memory_get_usage()."bytes\n";
- /*prints
- Final:885912bytes
- */
-
- echo"Peak:".memory_get_peak_usage()."bytes\n";
- /*prints
- Peak:13687072bytes
- */
4、CPU使用信息
为此,我们要利用getrusage()函数。请记住这个函数不适用于Windows平台。
- 以下为引用的内容:
-
- print_r(getrusage());
- /*prints
- 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:blockoutputoperations
- ru_inblock:blockinputoperations
- ru_msgsnd:messagessent
- ru_msgrcv:messagesreceived
- ru_maxrss:maximumresidentsetsize
- ru_ixrss:integralsharedmemorysize
- ru_idrss:integralunshareddatasize
- ru_minflt:pagereclaims
- ru_majflt:pagefaults
- ru_nsignals:signalsreceived
- ru_nvcsw:voluntarycontextswitches
- ru_nivcsw:involuntarycontextswitches
- ru_nswap:swaps
- ru_utime.tv_usec:usertimeused(microseconds)
- ru_utime.tv_sec:usertimeused(seconds)
- ru_stime.tv_usec:systemtimeused(microseconds)
- ru_stime.tv_sec:systemtimeused(seconds)
要知道脚本消耗多少CPU功率,我们需要看看‘usertime’和’systemtime’两个参数的值。秒和微秒部分默认是单独提供的。你可以除以100万微秒,并加上秒的参数值,得到一个十进制的总秒数。让我们来看一个例子:
- 以下为引用的内容:
-
- //sleepfor3seconds(non-busy)
- sleep(3);
-
- $data=getrusage();
- echo"Usertime:".
- ($data['ru_utime.tv_sec']+
- $data['ru_utime.tv_usec']/1000000);
- echo"Systemtime:".
- ($data['ru_sti