PHP内存限制检测

问题描述 投票:0回答:2

我的问题是如何检测托管的实际内存限制? php.ini 设置并不总是代表真正的限制,例如,内存限制为 512MB,脚本可能会在 128MB 时失败,最大执行时间也是如此。

php memory memory-management
2个回答
0
投票

如果 PHP exec 命令没有被阻止,您可以运行像这样的 shell 命令

$freeram_r = explode("\n", shell_exec("/usr/bin/free"));

并解析结果。或者直接输入您选择的参数,例如从 /proc/meminfo 输出获取真正可用的千兆字节,例如

$available = shell_exec('awk \'/MemAvailable/ { printf "%.3f \n", $2/1024/1024 }\' /proc/meminfo');

0
投票

您无法使用 php 检查服务器的内存限制,您只能检查服务器管理员在 php.ini 文件中设置的限制

您可以使用 PHP 函数,如 memory_get_usage() 和 memory_get_peak_usage() 来测量脚本执行期间的内存使用情况。您可以重复检查脚本中不同点的内存使用情况,并将其与 memory_limit 值进行比较,以估计实际内存限制。请记住,这些函数可能无法提供精确的值,但可以让您了解内存消耗情况。

$memoryLimit = ini_get('memory_limit');
$currentMemoryUsage = memory_get_usage();
$peakMemoryUsage = memory_get_peak_usage();
© www.soinside.com 2019 - 2024. All rights reserved.