note 60186 added to function.popen
| From: | ricardo at haha dot com dot br | Date: | Thu, 29 Dec 2005 05:47:24 +0000 |
| Subject: | note 60186 added to function.popen | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-100896@lists.php.net to get a copy of this message | ||
I made this simple class to check the server status using the commands "w" (what users is
connected and what they are doing) and the command "free -b -o" to know the memory usage.
This class store the cpu load average, up time, memory and swap usage, and they percent.
Hope this help someone.
Class ServerStatus {
var $load_average = 0.0;
var $users_total = 0;
var $server_time, $up_time;
var $memory_total, $memory_used, $memory_free, $memory_shared, $memory_buffers, $memory_cached;
var $memory_percent;
var $swap_total, $swap_used, $swap_free;
var $users_list;
function getStatus() {
$response =
w;
$response = explode("\n", $response);
//print_r($response);
//CPU STATUS
$this->server_time = $this->betWords($response[0], " ", " ");
$this->up_time = $this->betWords($response[0], "up", ", ");
$this->users_total = $this->betWords($response[0], ", ", " user");
$this->load_average = $this->betWords($response[0], "load average:",
",");
unSet($response[0]);
$this->users_list = implode("\r\n", $response);
//MEMORY STATUS
$response = free -b -o;
while(eregi(" ", $response))
$response = str_replace(" ", " ", $response);
$response = explode("\n", $response);
$mem = explode(" ", $response[1]);
$swap = explode(" ", $response[2]);
$this->memory_total = $mem[1];
$this->memory_used = $mem[2];
$this->memory_free = $mem[3];
$this->memory_shared = $mem[4];
$this->memory_buffers = $mem[5];
$this->memory_cached = $mem[6];
$this->memory_percent = (($this->memory_used - $this->memory_cached -
$this->memory_buffers) / $this->memory_total) * 100;
$this->memory_percent = number_format($this->memory_percent, 2, ".",
".");
$this->swap_total = $swap[1];
$this->swap_used = $swap[2];
$this->swap_free = $swap[3];
}
function betWords($text, $word1, $word2) {
$pos_ini = @StrPos($text, $word1)+StrLen($word1);
$pos_fin = @StrPos($text, $word2, $pos_ini+1);
$var = Array();
Return SubStr($text, $pos_ini, ($pos_fin-$pos_ini));
}
}
Usage:
$stat = new ServerStatus();
$stat->getStatus();
print_r($stat);
----
Manual Page -- http://www.php.net/manual/en/function.popen.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+60186
Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+60186&report=yes&reason=added+to+the+manual
Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+60186&report=yes&reason=bad+code
Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+60186&report=yes&reason=spam
Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+60186&report=yes&reason=useless
Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+60186&report=yes&reason=non-english
Delete: already in docs -- http://master.php.net/manage/user-notes.php?action=delete+60186&report=yes&reason=already+in+docs
Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+60186&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+60186&report=yes
Search -- http://master.php.net/manage/user-notes.php