public function memory_stats()
    {
        if ($this->host_os === 'WINDOWS') {
            $wmi = new \COM("winmgmts:\\\\.\\root\\cimv2");
            $os =  $wmi->ExecQuery("SELECT * FROM Win32_OperatingSystem");

            foreach ($os as $m) {
                $mem_total = $m->TotalVisibleMemorySize;
                $mem_free = $m->FreePhysicalMemory;
            }

            $prefMemory = $wmi->ExecQuery("SELECT * FROM Win32_PerfFormattedData_PerfOS_Memory");

            foreach ($prefMemory as $pm) {
                $mem_cache = $pm->CacheBytes/1024;
            }
            $mem_buff = 0;
        } else {
            $fh = fopen('/proc/meminfo', 'r');

            $mem_free = $mem_buff = $mem_cache = $mem_total = 0;

            while ($line = fgets($fh)) {
                $pieces = array();
                if (preg_match('/^MemTotal:\s+(\d+)\skB$/', $line, $pieces)) {
                    $mem_total = $pieces[1];
                }
                if (preg_match('/^MemFree:\s+(\d+)\skB$/', $line, $pieces)) {
                    $mem_free = $pieces[1];
                }
                if (preg_match('/^Buffers:\s+(\d+)\skB$/', $line, $pieces)) {
                    $mem_buff = $pieces[1];
                }
                if (preg_match('/^Cached:\s+(\d+)\skB$/', $line, $pieces)) {
                    $mem_cache = $pieces[1];
                    break;
                }
            }
            fclose($fh);
        }

        $result['used']  = round(($mem_total - ($mem_buff + $mem_cache + $mem_free)) * 100 / $mem_total);
        $result['cache'] = round(($mem_cache + $mem_buff) * 100 / $mem_total);
        $result['free']  = round($mem_free * 100 / $mem_total);
        return $result;
    }
public function memory_stats()
    {
        if ($this->host_os === 'WINDOWS') {
            $wmi = new \COM("winmgmts:\\\\.\\root\\cimv2");
            $os =  $wmi->ExecQuery("SELECT * FROM Win32_OperatingSystem");

            foreach ($os as $m) {
                $mem_total = $m->TotalVisibleMemorySize;
                $mem_free = $m->FreePhysicalMemory;
            }

            $prefMemory = $wmi->ExecQuery("SELECT * FROM Win32_PerfFormattedData_PerfOS_Memory");

            foreach ($prefMemory as $pm) {
                $mem_cache = $pm->CacheBytes/1024;
            }
            $mem_buff = 0;
        } else {
            $fh = fopen('/proc/meminfo', 'r');

            $mem_free = $mem_buff = $mem_cache = $mem_total = 0;

            while ($line = fgets($fh)) {
                $pieces = array();
                if (preg_match('/^MemTotal:\s+(\d+)\skB$/', $line, $pieces)) {
                    $mem_total = $pieces[1];
                }
                if (preg_match('/^MemFree:\s+(\d+)\skB$/', $line, $pieces)) {
                    $mem_free = $pieces[1];
                }
                if (preg_match('/^Buffers:\s+(\d+)\skB$/', $line, $pieces)) {
                    $mem_buff = $pieces[1];
                }
                if (preg_match('/^Cached:\s+(\d+)\skB$/', $line, $pieces)) {
                    $mem_cache = $pieces[1];
                    break;
                }
            }
            fclose($fh);
        }

        $result['used']  = round(($mem_total - ($mem_buff + $mem_cache + $mem_free)) * 100 / $mem_total);
        $result['cache'] = round(($mem_cache + $mem_buff) * 100 / $mem_total);
        $result['free']  = round($mem_free * 100 / $mem_total);
        return $result;
    }
public function memory_stats ( ) { if ( $ this -> host_os === 'WINDOWS' ) { $ wmi = new \ COM ( "winmgmts:\\\\.\\root\\cimv2" ) ; $ os = $ wmi -> ExecQuery ( "SELECT * FROM Win32_OperatingSystem" ) ; foreach ( $ os as $ m ) { $ mem_total = $ m -> TotalVisibleMemorySize ; $ mem_free = $ m -> FreePhysicalMemory ; } $ prefMemory = $ wmi -> ExecQuery ( "SELECT * FROM Win32_PerfFormattedData_PerfOS_Memory" ) ; foreach ( $ prefMemory as $ pm ) { $ mem_cache = $ pm -> CacheBytes / 1024 ; } $ mem_buff = 0 ; } else { $ fh = fopen ( '/proc/meminfo' , 'r' ) ; $ mem_free = $ mem_buff = $ mem_cache = $ mem_total = 0 ; while ( $ line = fgets ( $ fh ) ) { $ pieces = array ( ) ; if ( preg_match ( '/^MemTotal:\s+(\d+)\skB$/' , $ line , $ pieces ) ) { $ mem_total = $ pieces [ 1 ] ; } if ( preg_match ( '/^MemFree:\s+(\d+)\skB$/' , $ line , $ pieces ) ) { $ mem_free = $ pieces [ 1 ] ; } if ( preg_match ( '/^Buffers:\s+(\d+)\skB$/' , $ line , $ pieces ) ) { $ mem_buff = $ pieces [ 1 ] ; } if ( preg_match ( '/^Cached:\s+(\d+)\skB$/' , $ line , $ pieces ) ) { $ mem_cache = $ pieces [ 1 ] ; break ; } } fclose ( $ fh ) ; } $ result [ 'used' ] = round ( ( $ mem_total - ( $ mem_buff + $ mem_cache + $ mem_free ) ) * 100 / $ mem_total ) ; $ result [ 'cache' ] = round ( ( $ mem_cache + $ mem_buff ) * 100 / $ mem_total ) ; $ result [ 'free' ] = round ( $ mem_free * 100 / $ mem_total ) ; return $ result ; }
Get memory usage

@return array
Get memory usage