【问题标题】:How To Find Total Memory Usage如何查找总内存使用量
【发布时间】:2020-04-26 19:55:40
【问题描述】:

我希望能够弄清楚系统总共使用了多少 RAM - 而不仅仅是 PHP。如果一台 8GB 的​​计算机正在使用 1GB,我希望能够获取这些数字并显示它们(1GB/8GB)。

我只能弄清楚如何找到一个 PHP 脚本使用了多少内存,但这不是我想要的。

【问题讨论】:

  • 你的意思是PHP正在使用多少内存或者服务器有多少内存可用?也许stackoverflow.com/questions/1455379/get-server-ram-with-php 有用
  • 我怀疑 PHP 本身会有系统敏感数据可用,最好使用另一个系统,然后创建一个包装文件,根据需要将该值注入 PHP
  • +user3783243 这行得通。我会尽快发布解决方案。谢谢! +Martin 我知道这不是很安全,但我现在不追求安全(这是家庭网络的东西)
  • memory_get_usage () -> 返回当前分配给 PHP 脚本的内存量(以字节为单位)。 php.net/manual/en/function.memory-get-usage.php
  • +dale Landry 那不是我想要的。

标签: php


【解决方案1】:

我使用 /proc/meminfo 文件来获取 MemTotal 和 MemFree 值。然后我从 MemTotal 中减去 MemFree 值,以获得系统(不是 PHP)当前正在使用的内存量。

    function memory_usage() {
            return memory_total() - memory_free();
    }

    function memory_free() {
            $fh = fopen('/proc/meminfo','r');
            $mem = 0;
            while ($line = fgets($fh)) {
                    $pieces = array();
                    if (preg_match('/^MemFree:\s+(\d+)\skB$/', $line, $pieces)) {
                            $mem = $pieces[1];
                            break;
                    }
            }
            fclose($fh);
            return $mem;
    }

    function memory_total() {
            $fh = fopen('/proc/meminfo','r');
            $mem = 0;
            while ($line = fgets($fh)) {
                    $pieces = array();
                    if (preg_match('/^MemTotal:\s+(\d+)\skB$/', $line, $pieces)) {
                            $mem = $pieces[1];
                            break;
                    }
            }
            fclose($fh);
            return $mem;
    }

【讨论】:

    猜你喜欢
    • 2021-05-09
    • 1970-01-01
    • 2012-07-02
    • 2012-05-14
    • 2015-09-19
    • 2016-01-10
    • 2012-02-27
    • 2011-07-05
    • 2017-12-30
    相关资源
    最近更新 更多