Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 39248
Collapse All | Expand All

(-)phpSysInfo-2.1/includes/os/class.Linux.inc.php (-55 / +86 lines)
Lines 319-379 Link Here
319
    }
318
    }
320
319
321
    function memory () {
320
    function memory () {
322
        if ($fd = fopen('/proc/meminfo', 'r')) {
321
	    $uname = posix_uname();
323
            while ($buf = fgets($fd, 4096)) {
322
	    if ($fd = fopen('/proc/meminfo', 'r')) {
324
                if (preg_match('/Mem:\s+(.*)$/', $buf, $ar_buf)) {
323
		    if(preg_match('/^2\.(5|6)\.\d+/i',$uname['release'])) {
325
                    $ar_buf = preg_split('/\s+/', $ar_buf[1], 6);
324
			    $results['ram'] = array();
326
325
			    $results['swap'] = array();
327
                    $results['ram'] = array();
326
			    $results['devswap'] = array();
328
327
329
                    $results['ram']['total']   = $ar_buf[0] / 1024;
328
			    while ($buf = fgets($fd, 4096)) {
330
                    $results['ram']['used']    = $ar_buf[1] / 1024;
329
				    if (preg_match('/^MemTotal:\s+(.*)\s*kB/i', $buf, $ar_buf)) {
331
                    $results['ram']['free']    = $ar_buf[2] / 1024;
330
					    $results['ram']['total']=$ar_buf[1];
332
                    $results['ram']['shared']  = $ar_buf[3] / 1024;
331
333
                    $results['ram']['buffers'] = $ar_buf[4] / 1024;
332
				    } else if (preg_match('/^MemFree:\s+(.*)\s*kB/i', $buf, $ar_buf)) {
334
                    $results['ram']['cached']  = $ar_buf[5] / 1024;
333
					    $results['ram']['free']=$ar_buf[1];
335
334
					    
336
                    // I don't like this since buffers and cache really aren't 
335
				    } else if (preg_match('/^Cached:\s+(.*)\s*kB/i', $buf, $ar_buf)) {
337
                    // 'used' per say, but I get too many emails about it.
336
					    $results['ram']['cached']=$ar_buf[1];
338
                    $results['ram']['t_used']  = $results['ram']['used'];
337
339
                    $results['ram']['t_free']  = $results['ram']['total'] - $results['ram']['t_used'];
338
				    } else if (preg_match('/^Buffers:\s+(.*)\s*kB/i', $buf, $ar_buf)) {
340
                    $results['ram']['percent'] = round(($results['ram']['t_used'] * 100) / $results['ram']['total']);
339
					    $results['ram']['buffers']=$ar_buf[1];
341
                }
340
				    }  else if (preg_match('/^SwapTotal:\s+(.*)\s*kB/i', $buf, $ar_buf)) {
342
341
					    $results['swap']['total']=$ar_buf[1];
343
                if (preg_match('/Swap:\s+(.*)$/', $buf, $ar_buf)) {
342
				    }   else if (preg_match('/^SwapFree:\s+(.*)\s*kB/i', $buf, $ar_buf)) {
344
                    $ar_buf = preg_split('/\s+/', $ar_buf[1], 3);
343
					    $results['swap']['free']=$ar_buf[1];
345
344
				    } 
346
                    $results['swap'] = array();
345
347
346
			    }
348
                    $results['swap']['total']   = $ar_buf[0] / 1024;
347
			    $results['ram']['shared']=0;
349
                    $results['swap']['used']    = $ar_buf[1] / 1024;
348
			    $results['ram']['used']=$results['ram']['total']-$results['ram']['free'];
350
                    $results['swap']['free']    = $ar_buf[2] / 1024;
349
			    $results['swap']['used']=$results['swap']['total']-$results['swap']['free'];
351
                    $results['swap']['percent'] = round(($ar_buf[1] * 100) / $ar_buf[0]);
350
		    } else {
352
351
			    while ($buf = fgets($fd, 4096)) {
353
                    // Get info on individual swap files
352
				    if (preg_match('/Mem:\s+(.*)$/', $buf, $ar_buf)) {
354
                    $swaps = file ('/proc/swaps');
353
					    $ar_buf = preg_split('/\s+/', $ar_buf[1], 6);
355
                    $swapdevs = split("\n", $swaps);
354
356
355
					    $results['ram'] = array();
357
                    for ($i = 1; $i < (sizeof($swapdevs) - 1); $i++) {
356
358
                        $ar_buf = preg_split('/\s+/', $swapdevs[$i], 6);
357
					    $results['ram']['total']   = $ar_buf[0] / 1024;
359
358
					    $results['ram']['used']    = $ar_buf[1] / 1024;
360
                        $results['devswap'][$i - 1] = array();
359
					    $results['ram']['free']    = $ar_buf[2] / 1024;
361
                        $results['devswap'][$i - 1]['dev']     = $ar_buf[0];
360
					    $results['ram']['shared']  = $ar_buf[3] / 1024;
362
                        $results['devswap'][$i - 1]['total']   = $ar_buf[2];
361
					    $results['ram']['buffers'] = $ar_buf[4] / 1024;
363
                        $results['devswap'][$i - 1]['used']    = $ar_buf[3];
362
					    $results['ram']['cached']  = $ar_buf[5] / 1024;
364
                        $results['devswap'][$i - 1]['free']    = ($results['devswap'][$i - 1]['total'] - $results['devswap'][$i - 1]['used']);
363
				    }
365
                        $results['devswap'][$i - 1]['percent'] = round(($ar_buf[3] * 100) / $ar_buf[2]);
364
366
                    }
365
				    if (preg_match('/Swap:\s+(.*)$/', $buf, $ar_buf)) {
367
                    break;
366
					    $ar_buf = preg_split('/\s+/', $ar_buf[1], 3);
368
                }
367
369
            }
368
					    $results['swap'] = array();
370
            fclose($fd);
369
371
        } else {
370
					    $results['swap']['total']   = $ar_buf[0] / 1024;
372
            $results['ram'] = array();
371
					    $results['swap']['used']    = $ar_buf[1] / 1024;
373
            $results['swap'] = array();
372
					    $results['swap']['free']    = $ar_buf[2] / 1024;
374
            $results['devswap'] = array();
373
375
        }
374
					    // Get info on individual swap files
376
        return $results;
375
					    break;
376
				    }
377
			    }
378
			    fclose($fd);
379
		    }
380
		    $swaps = file ('/proc/swaps');
381
		    $swapdevs = split("\n", $swaps);
382
383
		    for ($i = 1; $i < (sizeof($swapdevs) - 1); $i++) {
384
			    $ar_buf = preg_split('/\s+/', $swapdevs[$i], 6);
385
386
			    $results['devswap'][$i - 1] = array();
387
			    $results['devswap'][$i - 1]['dev']     = $ar_buf[0];
388
			    $results['devswap'][$i - 1]['total']   = $ar_buf[2];
389
			    $results['devswap'][$i - 1]['used']    = $ar_buf[3];
390
			    $results['devswap'][$i - 1]['free']    = ($results['devswap'][$i - 1]['total'] - $results['devswap'][$i - 1]['used']);
391
			    $results['devswap'][$i - 1]['percent'] = round(($ar_buf[3] * 100) / $ar_buf[2]);
392
		    }
393
394
		    // I don't like this since buffers and cache really aren't 
395
		    // 'used' per say, but I get too many emails about it.
396
		    $results['ram']['t_used']  = $results['ram']['used'];
397
		    $results['ram']['t_free']  = $results['ram']['total'] - $results['ram']['t_used'];
398
		    $results['ram']['percent'] = round(($results['ram']['t_used'] * 100) / $results['ram']['total']);
399
		    $results['swap']['percent'] = round(($results['swap']['used'] * 100) / $results['swap']['total']);
400
401
	    } else {
402
		    $results['ram'] = array();
403
		    $results['swap'] = array();
404
		    $results['devswap'] = array();
405
	    }
406
	    return $results;
377
    }
407
    }
378
    function filesystems () {
408
    function filesystems () {

Return to bug 39248