php连接mysql 内存占用的测试代码
来源:互联网 发布:热血传奇mac 编辑:程序博客网 时间:2024/05/21 09:53
$db = mysql_connect('192.168.xx.xx','xxxx','xxxx');$sql = 'SELECT * from items';mysql_select_db('jv01',$db);echo 'SELECT_DB: ',convert(memory_get_usage()),"\n"; //619.26 kb$r = mysql_query($sql,$db);echo 'QUERY_SQL: ',convert(memory_get_usage()),"\n"; //619.98 kb ###什么?查询完之后,内存大小居然只增加了不到1k?我那个表可是几十M的数据啊//sleep(50); // hold住进程,别销毁,留着看当前进程的内存分配1$arr = array();while ($rs = mysql_fetch_assoc($r)){ $arr[]=$rs;}echo 'FETCH_RS: ',convert(memory_get_usage()),"\n"; //27.11 mb ###什么?刚刚不是只增加了1k吗?这里的遍历的结果集怎么突增几十M啊?尼玛这到底是什么情况?unset($arr);echo 'UNSET: ',convert(memory_get_usage()),"\n"; //620.12 kb #### $arr z占了 几十Mmysql_free_result($r);echo 'FREE_R: ',convert(memory_get_usage()),"\n"; //620 kb ### 结果集居然只有0.12 k?这不扯淡么? 莫非。。。莫非缓冲区的数据php统计不到?莫非不是调用zend 内存申请函数来申请内存的?//sleep(50); // hold住进程,别销毁,留着看当前进程的内存分配2function convert($size){ $unit=array('b','kb','mb','gb','tb','pb'); return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i];}/*//返回结果如下:SELECT_DB: 619.26 kbQUERY_SQL: 619.98 kbFETCH_RS: 27.11 mbUNSET: 620.12 kbFREE_R: 620 kb*/