02
Jun '14
I’ve been having a go at pulling server information and stats out of PHP as a ‘nice to have’ for an application I’m building. It turns out that you can retrieve a fair bit of information from a Linux system if you’re not afraid of wrapping a few system calls. Here’s my finished script, please feel free to use at will!
$stats = array( 'Host Name' => exec('hostname'), 'System Date/Time' => date('Y-m-d H:i:s') ); $uptime_parts = explode(' ', file_get_contents('/proc/uptime')); $uptime_raw = $uptime_parts[0]; $days = floor($uptime_raw / 86400); $hours = ($uptime_raw / 3600) % 24; $minutes = ($uptime_raw / 60) % 60; $seconds = $uptime_raw % 60; $stats['Uptime'] = $days . ' day(s), ' . $hours . ' hour(s), ' . $minutes . ' minute(s) and ' . $seconds . ' second(s)'; $load_parts = sys_getloadavg(); $load_average = $load_parts[0]; $stats['Load Average'] = $load_average; $memory_data = preg_split('/[\r\n]/', file_get_contents('/proc/meminfo')); if($memory_data && count($memory_data) >= 2) { $memory_total_parts = array_values(array_filter(explode(' ', $memory_data[0]))); $memory_total = number_format(($memory_total_parts[1] / 1000000), 2); $memory_free_parts = array_values(array_filter(explode(' ', $memory_data[1]))); $memory_free = number_format(($memory_free_parts[1] / 1000000), 2); $stats['Total Memory'] = $memory_total . ' GB'; $stats['Available Memory'] = $memory_free . ' GB'; } $stats['Total Disk Space'] = number_format((disk_total_space('/') / 1000000000), 2) . ' GB'; $stats['Available Disk Space'] = number_format((disk_free_space('/') / 1000000000), 2) . ' GB';