php 获取系统负载,使用PHP获取Windows正常运行时间/负载?

这个版本将这里建议的一些想法和我自己的一些想法结合到一个文件中,该文件应该在* nix和Windows上大致相同。还纠正了原始中的一些明显错误/懒惰代码。

如果禁用exec(),则无法在Windows上运行。我无法看到这一点。

让我知道你是怎么办的。

/*

*************************************************************************

* *

* WHMCompleteSolution - Client Management, Billing & Support System *

* Copyright (c) 2007-2008 WHMCS. All Rights Reserved, *

* Release Date: 12th December 2008 *

* Version 3.8.1 Stable *

* *

*************************************************************************

* *

* Email: info@whmcs.com *

* Website: htttp://www.whmcs.com *

* *

*************************************************************************

Modified by DaveRandom, Sept 2011

This file can be uploaded to each of your linux/Windows web servers in

order to display current load and uptime statistics for the server in the

Server Status page of the WHMCS Client Area and Admin Area Homepage

*/

error_reporting(0);

if (ini_get('disable_functions')) {

$disabled_funcs = array_map('trim',explode(',',ini_get('disable_functions')));

}

$action = (isset($_GET["action"])) ? $_GET["action"] : NULL;

if ($action == "phpinfo") {

// Seems as though something is missing here - maybe phpinfo() ?

} else {

// Stuff that works everywhere

$phpver = phpversion();

$mysqlver = (function_exists("mysql_get_client_info")) ? mysql_get_client_info() : '';

$zendver = (function_exists("zend_version")) ? zend_version() : '';

// Default values

$users[0] = $loadnow = "Unavailable";

$users[1] = $load15 = $load30 = "--";

$uptime_str = '';

if (strpos(strtolower(PHP_OS),'win') !== FALSE) {

// For Windaz

if (!in_array('exec',$disabled_funcs)) {

set_time_limit(150); // 'systeminfo' command can take a while...

$uptime = exec('systeminfo | find "System Up"');

$parts = explode(':',$uptime);

$parts = array_pop($parts);

$parts = explode(',',trim($parts));

foreach (array('days','hours','mins','secs') as $k => $v) {

$parts[$k] = explode(' ',trim($parts[$k]));

$$v = ($k) ? str_pad(array_shift($parts[$k]),2,'0',STR_PAD_LEFT) : array_shift($parts[$k]);

}

$uptime_str = "$days Days $hours:$mins:$secs";

exec('typeperf -sc 1 "\Processor(*)\% Processor Time"',$result);

for ($i = 0; trim($result[$i]) == ''; $i++) continue;

$parts = explode(',',$result[++$i]);

$loadnow = (is_numeric($loadnow = trim(trim(array_pop($parts)),'"\''))) ? $loadnow : 'Unavailable';

}

} else {

// For *nix

if (in_array('exec',$disabled_funcs)) {

$load = file_get_contents("/proc/loadavg");

$load = explode(' ',$load);

$loadnow = $load[0];

$load15 = $load[1];

$load30 = $load[2];

} else if (($reguptime = trim(exec("uptime"))) && preg_match("/, *(\\d) (users?), .*: (.*), (.*), (.*)/",$reguptime,$uptime)) {

$users[0] = $uptime[1];

$users[1] = $uptime[2];

$loadnow = $uptime[3];

$load15 = $uptime[4];

$load30 = $uptime[5];

}

if (in_array('shell_exec',$disabled_funcs)) {

$uptime_text = file_get_contents("/proc/uptime");

$uptime = substr($uptime_text,0,strpos($uptime_text," "));

} else {

$uptime = shell_exec("cut -d. -f1 /proc/uptime");

}

$days = floor($uptime/60/60/24);

$hours = str_pad($uptime/60/60%24,2,"0",STR_PAD_LEFT);

$mins = str_pad($uptime/60%60,2,"0",STR_PAD_LEFT);

$secs = str_pad($uptime%60,2,"0",STR_PAD_LEFT);

$uptime_str = "$days Days $hours:$mins:$secs";

}

echo "$loadnow\n";

echo "$uptime_str\n";

echo "$phpver\n";

echo "$mysqlver\n";

echo "$zendver\n";

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值