php不常用函数

 3、内存使用信息<br /> 通过侦测脚本的内存使用情况,有利于代码的优化。PHP提供了一个垃圾收集器和一个非常复杂的内存管理器。脚本执行时所使用的内存量,有升有跌。为了得到当前的内存使用情况,我们可以使用memory_get_usage()函数。如果需要获得任意时间点的最高内存使用量,则可以使用memory_limit()函数。<br /> <br /> 以下为引用的内容: <br /> echo“Initial:“.memory_get_usage().”bytes\n”; <br /> /*prints <br /> Initial:361400bytes <br /> */ <br /> <br /> //let’suseup some memory <br /> for($i=0;$i&lt;100000;$i++){ <br /> $array[]=md5($i); <br /> } <br /> <br /> //let'sremovehalfofthearray <br /> for($i=0;$i&lt;100000;$i++){ <br /> unset($array[$i]); <br /> } <br /> <br /> echo&quot;Final:&quot;.memory_get_usage().&quot;bytes\n&quot;; <br /> /*prints <br /> Final:885912bytes <br /> */ <br /> <br /> echo&quot;Peak:&quot;.memory_get_peak_usage().&quot;bytes\n&quot;; <br /> /*prints <br /> Peak:13687072bytes <br /> */ <br /> <br /> 4、CPU使用信息<br /> 为此,我们要利用getrusage()函数。请记住这个函数不适用于Windows平台。<br /> print_r(getrusage()); <br /> /*prints <br /> Array <br /> ( <br /> [ru_oublock]=&gt;0 <br /> [ru_inblock]=&gt;0 <br /> [ru_msgsnd]=&gt;2 <br /> [ru_msgrcv]=&gt;3 <br /> [ru_maxrss]=&gt;12692 <br /> [ru_ixrss]=&gt;764 <br /> [ru_idrss]=&gt;3864 <br /> [ru_minflt]=&gt;94 <br /> [ru_majflt]=&gt;0 <br /> [ru_nsignals]=&gt;1 <br /> [ru_nvcsw]=&gt;67 <br /> [ru_nivcsw]=&gt;4 <br /> [ru_nswap]=&gt;0 <br /> [ru_utime.tv_usec]=&gt;0 <br /> [ru_utime.tv_sec]=&gt;0 <br /> [ru_stime.tv_usec]=&gt;6269 <br /> [ru_stime.tv_sec]=&gt;0 <br /> ) <br /> 这可能看起来有点神秘,除非你已经有系统管理员权限。以下是每个值的具体说明(你不需要记住这些)<br /> ru_oublock:blockoutputoperations <br /> ru_inblock:blockinputoperations <br /> ru_msgsnd:messagessent <br /> ru_msgrcv:messagesreceived <br /> ru_maxrss:maximumresidentsetsize <br /> ru_ixrss:integralsharedmemorysize <br /> ru_idrss:integralunshareddatasize <br /> ru_minflt:pagereclaims <br /> ru_majflt:pagefaults <br /> ru_nsignals:signalsreceived <br /> ru_nvcsw:voluntarycontextswitches <br /> ru_nivcsw:involuntarycontextswitches <br /> ru_nswap:swaps <br /> ru_utime.tv_usec:usertimeused(microseconds) <br /> ru_utime.tv_sec:usertimeused(seconds) <br /> ru_stime.tv_usec:systemtimeused(microseconds) <br /> ru_stime.tv_sec:systemtimeused(seconds) <br /> 要知道脚本消耗多少CPU功率,我们需要看看‘usertime’和’systemtime’两个参数的值。秒和微秒部分默认是单独提供的。你可以除以100万微秒,并加上秒的参数值,得到一个十进制的总秒数。让我们来看一个例子:<br /> //sleepfor3seconds(non-busy) <br /> sleep(3); <br /> $data=getrusage(); <br /> echo“Usertime:“. <br /> ($data['ru_utime.tv_sec']+ <br /> $data['ru_utime.tv_usec']/1000000); <br /> echo“Systemtime:“. <br /> ($data['ru_stime.tv_sec']+ <br /> $data['ru_stime.tv_usec']/1000000); <br /> /*prints <br /> Usertime:0.011552 <br /> Systemtime:0 <br /> */ <br /> 尽管脚本运行用了大约3秒钟,CPU使用率却非常非常低。因为在睡眠运行的过程中,该脚本实际上不消耗CPU资源。还有许多其他的任务,可能需要一段时间,但不占用类似等待磁盘操作等CPU时间。因此正如你所看到的,CPU使用率和运行时间的实际长度并不总是相同的。下面是一个例子:<br /> //loop10milliontimes(busy) <br /> for($i=0;$i&lt;10000000;$i++){ <br /> <br /> } <br /> <br /> $data=getrusage(); <br /> echo&quot;Usertime:&quot;. <br /> ($data['ru_utime.tv_sec']+ <br /> $data['ru_utime.tv_usec']/1000000); <br /> echo&quot;Systemtime:&quot;. <br /> ($data['ru_stime.tv_sec']+ <br /> $data['ru_stime.tv_usec']/1000000); <br /> <br /> /*prints <br /> Usertime:1.424592 <br /> Systemtime:0.004204 <br /> */ <br /> 这花了大约1.4秒的CPU时间,但几乎都是用户时间,因为没有系统调用。系统时间是指花费在执行程序的系统调用时的CPU开销。下面是一个例子:<br /> $start=microtime(true); <br /> //keepcallingmicrotimeforabout3seconds <br /> while(microtime(true)-$start&lt;3){ <br /> } <br /> <br /> $data=getrusage(); <br /> echo&quot;Usertime:&quot;. <br /> ($data['ru_utime.tv_sec']+ <br /> $data['ru_utime.tv_usec']/1000000); <br /> echo&quot;Systemtime:&quot;. <br /> ($data['ru_stime.tv_sec']+ <br /> $data['ru_stime.tv_usec']/1000000); <br /> /*prints <br /> Usertime:1.088171 <br /> Systemtime:1.675315 <br /> */ <br />   现在我们有相当多的系统时间占用。这是因为脚本多次调用microtime()函数,该函数需要向操作系统发出请求,以获取所需时间。你也可能会注意到运行时间加起来不到3秒。这是因为有可能在服务器上同时存在其他进程,并且脚本没有100%使用CPU的整个3秒持续时间。
RangeTime:0.008302s
RangeMem:211.55 KB
返回顶部 留言