如何获得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');