如何获得PHP可用的内存
我目前正在使用如何获得PHP可用的内存,php,memory-management,Php,Memory Management,我目前正在使用memory\u get\u usage函数来确定我的PHP脚本使用了多少内存。但是,我想根据PHP可用的内存总量显示内存使用值 如何获取PHP可用的内存总量?您可以使用PHP.ini设置: 从技术上讲,这不是PHP可用的总量,而是PHP脚本可用的总量。存在一个问题,使用ini\u-get只会从PHP.ini中获得字符串(例如500或500M或1G等) 如果需要以字节为单位的实际值,可以使用以下简单的开源工具: 然后您可以这样做:$limitProvider->getLimitIn
memory\u get\u usage
函数来确定我的PHP脚本使用了多少内存。但是,我想根据PHP可用的内存总量显示内存使用值
如何获取PHP可用的内存总量?您可以使用PHP.ini设置:
从技术上讲,这不是PHP可用的总量,而是PHP脚本可用的总量。存在一个问题,使用
ini\u-get
只会从PHP.ini
中获得字符串(例如500
或500M
或1G
等)
如果需要以字节为单位的实际值,可以使用以下简单的开源工具:
然后您可以这样做:
$limitProvider->getLimitInBytes()代码>,库会自动为您转换所有有效值。也许问题并不完全准确。因为分配和释放不同的内存区域可能会导致类似拼凑的内存分配,所以问题可能不是您想要问的
例如,从6兆字节的空闲RAM开始,每兆字节的空闲RAM用F
表示:
FFFFFF
并分配三次1MB,第一次分配给$a
,第二次分配给$b
,第三次分配给$c
,然后您将得到此地图:
abcFFF
在此之后,您可以释放分配给$b
的第二个兆字节,例如,您从一个函数返回$b
是一个局部变量。现在,地图如下所示:
aFcFFF
现在您有4个4兆字节的可用内存,您可以分配4倍于1兆字节的内存,但在一个块中只能分配3兆字节
那么,你真正的问题是:
我能分配的最大连续面积是多少
我可以分配的空闲区域的总数是多少
对于第一个问题,答案是3兆字节,对于第二个问题,答案是4兆字节 或者如果他需要全RAM-@ComFreek谢谢。当你说“一个PHP脚本的可用量”时,我假设你的意思是,如果你将限制设置为8MB,并且同时收到100个请求,那么总的机器内存使用量将是800MB?“正确吗?”卢克引用“这设置了脚本允许分配的最大内存量(以字节为单位)”。如果理论上100个请求并行运行,并且所有请求都分配100 MB内存(前提是内存限制>=100M
),那么使用的总内存将为800MB。如果内存限制设置为-1
,这意味着无限量。。。那么你就不能使用这个解决方案了。
ini_get('memory_limit');