A-A+

php响应处理内存占用的问题

2017年03月12日 PHP技术文章 评论 1 条 阅读 4 views 次

php响应处理内存占用的问题

在使用php处理程序的同时,也会占用一定的内存,当占用的内存越来越多的时候,就会出现内存不足而出现错误提示,这种情况通常都是由于一些PHP程序死循环或者是某个程序计算时间较长而导致的问题。

在thinkphp中,是可以直接进行配置,看某个程序片段执行的时间是多久,但在普通的 PHP 代码执行中,却只有靠自己写一段代码了,这在PHP之中也很容易实现的。

直接看下面的实例代码:

  1. <?php   
  2. echo memory_get_usage(), '  
  3. '; // 313864   
  4. $tmp = str_repeat('http://www.xiariboke.net/', 4000);   
  5. echo memory_get_usage(), '  
  6. '; // 406048   
  7. unset($tmp);   
  8. echo memory_get_usage(); // 313952   
  9. ?>  

其中URL网址就是代码片段所在的位置了,而后面的单元则是 byte(s),也就是除了 memory_get_usage()之后,这个程序本身所占用的内存大小。

我们主要看 unset 这个函数的使用,是把不需要的变量进行删除,以达到PHP优化代码的目的,类似的代码还有 php mysql_free_result() 等函数,可以清空不再需要的一些结果集或者变量等,这样在下一次再次执行计算的时候就可以得到更多的内存。用得较多的应该是 unset 这个函数吧。

好了,我们再来看一个关于 memory_get_usage() 的函数,如下:

  1. if (!function_exists('memory_get_usage'))   
  2. {   
  3. /**  
  4. +----------------------------------------------------------  
  5. * 取得内存使用情况  
  6. +----------------------------------------------------------  
  7. * @return integer  
  8. +----------------------------------------------------------  
  9. */   
  10. function memory_get_usage()   
  11. {   
  12. $pid = getmypid();   
  13. if (IS_WIN)   
  14. {   
  15. exec('tasklist /FI "PID eq ' . $pid . '" /FO LIST', $output);   
  16. return preg_replace('/[^0-9]/', ''$output[5]) * 1024;   
  17. }   
  18. else   
  19. {   
  20. exec("ps -eo%mem,rss,pid | grep $pid"$output);   
  21. $output = explode(" "$output[0]);   
  22. return $output[1] * 1024;   
  23. }   
  24. }   
  25. }   

函数的使用实例:

  1. <?php   
  2. //memory_get_usage();   
  3. $m1 = memory_get_usage();   
  4. echo '  
  5. m1:',$m1;//58096   
  6. $a = 'hello';   
  7. $b = str_repeat($a,1000);   
  8. $m2 = memory_get_usage();   
  9. echo '  
  10. m2:',$m2;//63424   
  11. unset($b);   
  12. $m3 = memory_get_usage();   
  13. echo '  
  14. m3:',$m3;//58456   
  15. ?>  

大家在使用的时候,可以看看哪个更适合一些,实际上如果我们只想要统计一下自己PHP所使用的内存大小,第一种方法完全就足够了,PHP的代码主要在于优化,优化好之后再进行占用内存代码的测试,找到一个占用内存最小的方法即可。

标签:

1 条留言  访客:1 条  博主:0 条

  1. Koolight

    php升级对内存占用优化很大!

给我留言