php检测系统内存,PHP字符串占用内存测试

博主通过CLI和CGI方式在PHP环境中测试了60MB字符串的内存占用,结果显示实际占用约为61MB,证实了内存管理效率。测试包括内存限制设置、字符串长度显示、内存峰值等,表明PHP在处理大型字符串时内存使用较为高效,可放心使用。
摘要由CSDN通过智能技术生成

背景

有人说“经验数据,60MB字符串会占用360MB内存”。感觉不靠谱,所以做了个测试。

测试环境

操作系统: win7 64位

PHP版本: 5.4.12

Apache版本:2.4.4

测试方式

分CLI,CGI两种方式测试

测试代码

ini_set('memory_limit','2G');

echo 'mem:', convert(memory_get_usage()), ' real:', convert(memory_get_usage(true)), PHP_EOL;

$str = str_repeat('a', 1);

echo 'string length:', convert(strlen($str)), PHP_EOL;

echo 'mem:', convert(memory_get_usage()), ' real:', convert(memory_get_usage(true)), PHP_EOL;

echo 'peak mem:', convert(memory_get_peak_usage()), ' real:', convert(memory_get_peak_usage(true)), PHP_EOL;

sleep(10);

echo 'done';

function convert($size)

{

$unit=array('b','kb','mb','gb','tb','pb');

return @round($size/pow(1024,($i=floor(log($size,1024)))),2).' '.$unit[$i];

}

测试过程及结果

CLI方式

命令行下执行 php script.php

得到如下结果

mem:234.55 kb real:256 kb

string length:60 mb

mem:60.23 mb real:60.5 mb

peak mem:60.23 mb real:60.5 mb

done[Finished in 10.1s]

相关截图

2-300x28.png

(图1简单的PHP程序所占用的内存)

3-300x39.png

(图2申请60MB字符串的PHP内存占用)

说明60MB的字符串实际占用内存也就62MB。

CGI方式

开启web服务,打开http://localhost/script.php

得到如下结果

mem:252.91 kb real:512 kb

string length:60 mb

mem:60.25 mb real:60.75 mb

peak mem:60.25 mb real:60.75 mb

done

相关截图

4-300x26.jpg

(图3正常服务时httpd占用的内存)

5-300x38.jpg

(图4申请60MB字符串后,httpd占用的内存)

说明60MB字符串实际占用内存也为61MB左右(大概比字符串内存+正常服务内存之和多了1MB)

6-300x37.png

(图5申请1GB字符串的时候,httpd的内存使用情况。 大概比字符串内存+正常服务内存之和多了25MB)

总结

PHP在管理超长的字符串上不会浪费多余的内存。可以放心使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值