2024-04-10 18:59:38 +08:00
< ? php
namespace app\utils ;
2024-04-12 16:14:50 +08:00
use app\models\CollectionTasks ;
use app\models\Share ;
use app\models\User ;
2024-04-10 18:59:38 +08:00
use DateTime ;
use Yii ;
2024-04-12 16:14:50 +08:00
use yii\db\Exception ;
2024-04-10 18:59:38 +08:00
/**
* Class SystemInfoHelper
* Get system information
* Supported OS : Windows , Linux
* Windows needs PowerShell
2024-04-12 16:14:50 +08:00
* Linux needs ethtool
2024-04-10 18:59:38 +08:00
*/
class SystemInfoHelper
{
2024-04-12 19:54:32 +08:00
public array $timeRecords ; // Time records
public bool $EnableTimeRecords = false ; // Enable time records
2024-04-10 18:59:38 +08:00
public string $hostname ; // Hostname
public int $osType ; // 0: Windows, 1: Linux, 2: Others
public string $os ; // OS
public string $cpu ; // CPU
public int $ram ; // RAM Byte
public string $serverTime ; // Server Time
public string $serverUpTime ; // Server Up Time
public float $load ; // Load
public float $cpuUsage ; // CPU Usage
public float $ramUsage ; // RAM Usage
public string $dataMountPoint ; // Data Mount Point
public string $mp_fs ; // Filesystem
public int $mp_size ; // Size
2024-04-12 16:14:50 +08:00
public int $mp_used ; // Used
public int $mp_avail ; // Available
2024-04-10 18:59:38 +08:00
public string $dns ; // DNS
public string $gateway ; // Gateway
2024-04-12 16:14:50 +08:00
public array $nic ; // Network Interface [interfaceName, mac, speed, ipv4, ipv6]
2024-04-10 18:59:38 +08:00
public int $users ; // Users
public int $activeUsers ; // Active Users
public int $shares ; // Shares
public int $collections ; // Collections
public string $phpVersion ; // PHP Version
public string $memoryLimit ; // Memory Limit
public string $maxExecutionTime ; // Max Execution Time
public string $uploadMaxFilesize ; // Upload Max Filesize
public string $postMaxSize ; // Post Max Size
public string $extensions ; // Extensions
public string $dbType ; // Database Type
public string $dbVersion ; // Database Version
2024-04-12 16:14:50 +08:00
public int $dbSize ; // Database Size
2024-04-10 18:59:38 +08:00
/**
2024-04-12 16:14:50 +08:00
* 检查操作系统类型
* 必须在其他检测前调用
* @ return void
2024-04-10 18:59:38 +08:00
*/
2024-04-12 16:14:50 +08:00
private function detectOsType () : void
2024-04-10 18:59:38 +08:00
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-10 18:59:38 +08:00
$os = php_uname ();
if ( stripos ( $os , 'windows' ) !== false ) {
2024-04-12 16:14:50 +08:00
$this -> osType = 0 ;
2024-04-10 18:59:38 +08:00
} elseif ( stripos ( $os , 'linux' ) !== false ) {
2024-04-12 16:14:50 +08:00
$this -> osType = 1 ;
2024-04-10 18:59:38 +08:00
} else {
2024-04-12 16:14:50 +08:00
$this -> osType = 2 ;
2024-04-10 18:59:38 +08:00
}
2024-04-12 19:54:32 +08:00
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectOsType' ] = microtime ( true ) - $start ;
}
2024-04-10 18:59:38 +08:00
}
2024-04-12 16:14:50 +08:00
/**
* 获取主机名
* @ return void
*/
2024-04-10 18:59:38 +08:00
private function detectHostname () : void
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-10 18:59:38 +08:00
$this -> hostname = gethostname ();
2024-04-12 19:54:32 +08:00
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectHostname' ] = microtime ( true ) - $start ;
}
2024-04-10 18:59:38 +08:00
}
2024-04-12 16:14:50 +08:00
/**
* 获取操作系统信息
* @ return void
*/
2024-04-10 18:59:38 +08:00
private function detectOs () : void
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-10 18:59:38 +08:00
$this -> os = php_uname ( 's' ) . ' ' . php_uname ( 'r' ) . ' ' . php_uname ( 'v' ) . ' ' . php_uname ( 'm' );
2024-04-12 19:54:32 +08:00
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectOs' ] = microtime ( true ) - $start ;
}
2024-04-10 18:59:38 +08:00
}
2024-04-12 16:14:50 +08:00
/**
* 获取CPU信息
* @ return void
*/
2024-04-10 18:59:38 +08:00
private function detectCpu () : void
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-10 18:59:38 +08:00
if ( $this -> osType === 0 ) {
2024-04-12 19:54:32 +08:00
$this -> cpu = shell_exec ( 'powershell "$processorInfo = Get-WmiObject Win32_Processor;$processorInfo.Name + \' (\' + $processorInfo.NumberOfCores + \' Cores)\'"' );
2024-04-10 18:59:38 +08:00
} else {
$cpu_model = trim ( shell_exec ( " cat /proc/cpuinfo | grep 'model name' | uniq | awk -F': ' ' { print $ 2}' " ));
$cpu_cores = shell_exec ( 'nproc' );
2024-04-12 19:54:32 +08:00
$this -> cpu = $cpu_model . ' (' . $cpu_cores . ' Cores)' ;
}
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectCpu' ] = microtime ( true ) - $start ;
2024-04-10 18:59:38 +08:00
}
}
/**
2024-04-12 16:14:50 +08:00
* 获取已安装RAM信息
* 32 位系统最大只会获取到2147483647结果 ( 2 GB )
2024-04-10 18:59:38 +08:00
* @ return void
*/
private function detectRam () : void
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-10 18:59:38 +08:00
if ( $this -> osType === 0 ) {
$this -> ram = intval ( shell_exec ( 'powershell (Get-WmiObject Win32_computerSystem).TotalPhysicalMemory' ));
} else {
$this -> ram = intval ( shell_exec ( " grep MemTotal /proc/meminfo | awk ' { print $ 2}' " ));
}
2024-04-12 19:54:32 +08:00
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectRam' ] = microtime ( true ) - $start ;
}
2024-04-10 18:59:38 +08:00
}
2024-04-12 16:14:50 +08:00
/**
* 获取服务器时间
* @ return void
*/
2024-04-10 18:59:38 +08:00
private function detectServerTime () : void
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-10 18:59:38 +08:00
$this -> serverTime = date ( 'Y-m-d H:i:s T' );
2024-04-12 19:54:32 +08:00
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectServerTime' ] = microtime ( true ) - $start ;
}
2024-04-10 18:59:38 +08:00
}
2024-04-12 16:14:50 +08:00
/**
* 获取服务器已运行时间
* @ return void
*/
2024-04-10 18:59:38 +08:00
private function detectServerUptime () : void
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-10 18:59:38 +08:00
if ( $this -> osType === 0 ) {
$lastBootUpTime = strtotime ( shell_exec ( 'powershell (Get-CimInstance Win32_OperatingSystem).LastBootUpTime' ));
$now = new DateTime ();
$bootTime = new DateTime ( " @ $lastBootUpTime " );
$interval = $bootTime -> diff ( $now );
$this -> serverUpTime = $interval -> format ( '%a days, %h hours, %i minutes, %s seconds' );
} else {
$this -> serverUpTime = str_replace ( " up " , " " , trim ( shell_exec ( 'uptime -p' )));
}
2024-04-12 19:54:32 +08:00
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectServerUptime' ] = microtime ( true ) - $start ;
}
2024-04-10 18:59:38 +08:00
}
/**
2024-04-12 16:14:50 +08:00
* 获取服务器负载
2024-04-10 18:59:38 +08:00
* Only for Linux
* @ return void
*/
private function detectLoad () : void
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-10 18:59:38 +08:00
$this -> load = sys_getloadavg ()[ 0 ];
2024-04-12 19:54:32 +08:00
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectLoad' ] = microtime ( true ) - $start ;
}
2024-04-10 18:59:38 +08:00
}
2024-04-12 16:14:50 +08:00
/**
* 获取CPU使用率
* @ return void
*/
2024-04-10 18:59:38 +08:00
private function detectCpuUsage () : void
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-10 18:59:38 +08:00
if ( $this -> osType === 0 ) {
$this -> cpuUsage = floatval ( shell_exec ( 'powershell (Get-WmiObject Win32_Processor).LoadPercentage' ));
} else {
$this -> cpuUsage = floatval ( shell_exec ( " top -b -n1 | grep 'Cpu(s)' | awk ' { print $ 2 + $ 4}' " ));
}
2024-04-12 19:54:32 +08:00
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectCpuUsage' ] = microtime ( true ) - $start ;
}
2024-04-10 18:59:38 +08:00
}
2024-04-12 16:14:50 +08:00
/**
* 获取RAM使用率
* @ return void
*/
2024-04-10 18:59:38 +08:00
private function detectRamUsage () : void
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-10 18:59:38 +08:00
if ( $this -> osType === 0 ) {
$this -> ramUsage = round ( floatval ( shell_exec ( ' powershell " 100 - (Get-WmiObject Win32_OperatingSystem).FreePhysicalMemory / (Get-WmiObject Win32_Operati
ngSystem ) . TotalVisibleMemorySize * 100 " ')), 2);
} else {
$this -> ramUsage = round ( floatval ( shell_exec ( 'free | grep Mem | awk \'{print $3/$2 * 100.0}\'' )), 2 );
}
2024-04-12 19:54:32 +08:00
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectRamUsage' ] = microtime ( true ) - $start ;
}
2024-04-10 18:59:38 +08:00
}
2024-04-12 16:14:50 +08:00
/**
* 获取数据挂载点信息
* 包含文件系统、大小、已用、可用
* @ return void
*/
2024-04-10 18:59:38 +08:00
private function detectDataMountPoint () : void
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-10 18:59:38 +08:00
$dataPath = Yii :: getAlias ( Yii :: $app -> params [ 'dataDirectory' ]);
if ( $this -> osType === 0 ) {
2024-04-12 16:14:50 +08:00
$this -> dataMountPoint = shell_exec ( 'powershell (Get-Item \"' . $dataPath . '\").PSDrive.Root' ); // X:\
$dmp = substr ( $this -> dataMountPoint , 0 , 2 ); // X:
2024-04-10 18:59:38 +08:00
$this -> mp_fs = shell_exec ( 'powershell "(Get-WmiObject Win32_Volume | Where-Object {$_.DriveLetter -eq \'' . $dmp . '\'}).FileSystem"' );
2024-04-12 16:14:50 +08:00
$this -> mp_size = intval ( shell_exec ( 'powershell "(Get-WmiObject Win32_LogicalDisk | Where-Object {$_.DeviceID -eq \'' . $dmp . '\'}).Size"' ));
$this -> mp_avail = intval ( shell_exec ( 'powershell "(Get-WmiObject Win32_LogicalDisk | Where-Object {$_.DeviceID -eq \'' . $dmp . '\'}).FreeSpace"' ));
$this -> mp_used = $this -> mp_size - $this -> mp_avail ;
2024-04-10 18:59:38 +08:00
} else {
$this -> dataMountPoint = shell_exec ( " df -P \" " . $dataPath . " \" | awk 'NR==2 { print $ 6}' " );
$this -> mp_fs = shell_exec ( " df -T \" " . $this -> dataMountPoint . " \" | awk 'NR==2 { print $ 2}' " );
2024-04-12 16:14:50 +08:00
$this -> mp_size = intval ( shell_exec ( 'df -k "' . $this -> dataMountPoint . '" | awk \'NR==2{print $2}\'' ));
$this -> mp_used = intval ( shell_exec ( 'df -k "' . $this -> dataMountPoint . '" | awk \'NR==2{print $3}\'' ));
$this -> mp_avail = intval ( shell_exec ( 'df -k "' . $this -> dataMountPoint . '" | awk \'NR==2{print $4}\'' ));
2024-04-10 18:59:38 +08:00
}
2024-04-12 19:54:32 +08:00
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectDataMountPoint' ] = microtime ( true ) - $start ;
}
2024-04-10 18:59:38 +08:00
}
2024-04-12 16:14:50 +08:00
/**
* 获取DNS信息
* @ return void
*/
2024-04-10 18:59:38 +08:00
private function detectDns () : void
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-10 18:59:38 +08:00
if ( $this -> osType === 0 ) {
2024-04-12 19:54:32 +08:00
$this -> dns = shell_exec ( 'powershell "Get-CimInstance Win32_NetworkAdapterConfiguration | Select-Object -ExpandProperty DNSServerSearchOrder"' );
2024-04-10 18:59:38 +08:00
} else {
2024-04-12 16:14:50 +08:00
$this -> dns = shell_exec ( 'cat /etc/resolv.conf | grep nameserver | awk \'{print $2}\' | tr \'\\n\' \',\' | sed \'s/,$//\'' );
2024-04-10 18:59:38 +08:00
}
2024-04-12 19:54:32 +08:00
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectDns' ] = microtime ( true ) - $start ;
}
2024-04-10 18:59:38 +08:00
}
2024-04-12 16:14:50 +08:00
/**
* 获取网关信息
* @ return void
*/
2024-04-10 18:59:38 +08:00
private function detectGateway () : void
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-10 18:59:38 +08:00
if ( $this -> osType === 0 ) {
2024-04-12 19:54:32 +08:00
$this -> gateway = shell_exec ( 'powershell "Get-CimInstance Win32_NetworkAdapterConfiguration | Select-Object -ExpandProperty DefaultIPGateway"' );
2024-04-10 18:59:38 +08:00
} else {
2024-04-12 16:14:50 +08:00
$this -> gateway = shell_exec ( 'ip route | grep default | awk \'{print $3}\'' );
2024-04-10 18:59:38 +08:00
}
2024-04-12 19:54:32 +08:00
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectGateway' ] = microtime ( true ) - $start ;
}
2024-04-10 18:59:38 +08:00
}
2024-04-12 16:14:50 +08:00
/**
* 获取网卡信息
* 包含接口名、MAC地址、速度、IPv4、IPv6
* @ return void
*/
private function detectNic () : void
2024-04-10 18:59:38 +08:00
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-10 18:59:38 +08:00
if ( $this -> osType === 0 ) {
2024-04-12 19:54:32 +08:00
$result1 = shell_exec ( 'powershell "$NetAdapters = Get-NetAdapter | Where-Object { $_.Status -eq \'Up\' };$Names = $NetAdapters.Name -join \', \';$MacAddresses = $NetAdapters.MacAddress -join \', \';$Speed = $NetAdapters.LinkSpeed -join \', \';Write-Output $Names;Write-Output $MacAddresses;Write-Output $Speed;"' );
$lines = explode ( " \n " , $result1 );
$result2 = shell_exec ( 'powershell "$IPAddressList = (Get-CimInstance -ClassName Win32_NetworkAdapterConfiguration | Where-Object { $_.IPAddress -ne $null }).IPAddress;$IPv4Addresses = @();$IPv6Addresses = @();foreach ($IPAddress in $IPAddressList) {if ($IPAddress -match \'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\') {$IPv4Addresses += $IPAddress} elseif ($IPAddress -match \'[:0-9A-Fa-f]{4,}:[0-9A-Fa-f:]+\') {$IPv6Addresses += $IPAddress}};Write-Output $($IPv4Addresses -join \', \');Write-Output $($IPv6Addresses -join \', \');"' );
$lines2 = explode ( " \n " , $result2 );
2024-04-12 16:14:50 +08:00
$this -> nic = [
2024-04-12 19:54:32 +08:00
'interfaceName' => $lines [ 0 ],
'mac' => strtolower ( $lines [ 1 ]),
'speed' => $lines [ 2 ],
'ipv4' => $lines2 [ 0 ],
'ipv6' => $lines2 [ 1 ]
2024-04-12 16:14:50 +08:00
];
2024-04-10 18:59:38 +08:00
} else {
2024-04-12 16:14:50 +08:00
$name = trim ( shell_exec ( 'ip link | awk -F: \'$0 !~ "lo|vir|wl|^[^0-9]"{print $2;getline}\'' ));
$this -> nic = [
'interfaceName' => $name ,
'mac' => shell_exec ( " ip addr show $name | awk '/ether/ { print $ 2}' " ),
'speed' => shell_exec ( " ethtool $name 2>/dev/null | awk '/Speed:/ { print $ 2}' " ),
'ipv4' => shell_exec ( " ip addr show $name | awk '/inet / { print $ 2}' | cut -d'/' -f1 " ),
'ipv6' => shell_exec ( " ip addr show $name | awk '/inet6 / { print $ 2}' | cut -d'/' -f1 " )
];
2024-04-10 18:59:38 +08:00
}
2024-04-12 19:54:32 +08:00
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectNic' ] = microtime ( true ) - $start ;
}
2024-04-10 18:59:38 +08:00
}
2024-04-12 16:14:50 +08:00
/**
* 获取用户信息
* 包含用户数、活跃用户数
* @ return void
*/
2024-04-10 18:59:38 +08:00
private function detectUsers () : void
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-12 16:14:50 +08:00
$this -> users = User :: find () -> count ();
$activeTime = date ( 'Y-m-d H:i:s' , strtotime ( '-24 hours' ));
$this -> activeUsers = User :: find () -> where ([ '>' , 'last_login' , $activeTime ]) -> count ();
2024-04-12 19:54:32 +08:00
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectUsers' ] = microtime ( true ) - $start ;
}
2024-04-10 18:59:38 +08:00
}
2024-04-12 16:14:50 +08:00
/**
* 获取分享信息
* @ return void
*/
2024-04-10 18:59:38 +08:00
private function detectShares () : void
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-12 16:14:50 +08:00
$this -> shares = Share :: find () -> count ();
2024-04-12 19:54:32 +08:00
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectShares' ] = microtime ( true ) - $start ;
}
2024-04-10 18:59:38 +08:00
}
2024-04-12 16:14:50 +08:00
/**
* 获取收集任务信息
* @ return void
*/
2024-04-10 18:59:38 +08:00
private function detectCollections () : void
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-12 16:14:50 +08:00
$this -> collections = CollectionTasks :: find () -> count ();
2024-04-12 19:54:32 +08:00
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectCollections' ] = microtime ( true ) - $start ;
}
2024-04-10 18:59:38 +08:00
}
2024-04-12 16:14:50 +08:00
/**
* 获取PHP环境信息
* @ return void
*/
2024-04-10 18:59:38 +08:00
private function detectEnv () : void
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-12 16:14:50 +08:00
$this -> phpVersion = phpversion ();
$this -> memoryLimit = ini_get ( 'memory_limit' );
$this -> maxExecutionTime = ini_get ( 'max_execution_time' );
$this -> uploadMaxFilesize = ini_get ( 'upload_max_filesize' );
$this -> postMaxSize = ini_get ( 'post_max_size' );
$this -> extensions = implode ( ', ' , get_loaded_extensions ());
2024-04-12 19:54:32 +08:00
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectEnv' ] = microtime ( true ) - $start ;
}
2024-04-10 18:59:38 +08:00
}
2024-04-12 16:14:50 +08:00
/**
* 获取数据库信息
* @ return void
*/
2024-04-10 18:59:38 +08:00
private function detectDb () : void
{
2024-04-12 19:54:32 +08:00
$start = null ;
if ( $this -> EnableTimeRecords ) {
$start = microtime ( true );
}
2024-04-12 16:14:50 +08:00
$this -> dbType = Yii :: $app -> db -> driverName ;
// debug
// $this->dbVersion = '1';
// $this->dbSize = 1;
// return;
try {
$this -> dbVersion = Yii :: $app -> db -> createCommand ( 'SELECT VERSION()' ) -> queryScalar ();
} catch ( Exception ) {
$this -> dbVersion = 'Fetch Error' ;
}
$dbName = $_ENV [ 'DB_NAME' ];
try {
$this -> dbSize = Yii :: $app -> db -> createCommand ( " select SUM(data_length + index_length) from information_schema.TABLES where table_schema = ' $dbName ' group by table_schema; " ) -> queryScalar ();
} catch ( Exception ) {
$this -> dbSize = 'Fetch Error' ;
}
2024-04-12 19:54:32 +08:00
if ( $this -> EnableTimeRecords ) {
$this -> timeRecords [ 'detectDb' ] = microtime ( true ) - $start ;
}
2024-04-12 16:14:50 +08:00
}
2024-04-10 18:59:38 +08:00
2024-04-12 16:14:50 +08:00
/**
* 获取系统信息 ( 初始化 )
* @ return SystemInfoHelper
*/
public static function getSysInfoInit () : SystemInfoHelper
{
$sysInfo = new SystemInfoHelper ();
2024-04-12 19:54:32 +08:00
// Time records (Debug)
$sysInfo -> EnableTimeRecords = true ;
2024-04-12 16:14:50 +08:00
$sysInfo -> detectOsType ();
$sysInfo -> detectHostname ();
$sysInfo -> detectOs ();
$sysInfo -> detectCpu ();
$sysInfo -> detectRam ();
$sysInfo -> detectServerTime ();
$sysInfo -> detectServerUptime ();
2024-04-12 19:54:32 +08:00
2024-04-12 16:14:50 +08:00
if ( $sysInfo -> osType === 1 ) {
$sysInfo -> detectLoad ();
2024-04-12 19:54:32 +08:00
2024-04-10 18:59:38 +08:00
} else {
2024-04-12 16:14:50 +08:00
$sysInfo -> load = - 1 ;
2024-04-10 18:59:38 +08:00
}
2024-04-12 16:14:50 +08:00
$sysInfo -> detectCpuUsage ();
$sysInfo -> detectRamUsage ();
$sysInfo -> detectDataMountPoint ();
$sysInfo -> detectDns ();
$sysInfo -> detectGateway ();
$sysInfo -> detectNic ();
$sysInfo -> detectUsers ();
$sysInfo -> detectShares ();
$sysInfo -> detectCollections ();
$sysInfo -> detectEnv ();
$sysInfo -> detectDb ();
return $sysInfo ;
2024-04-10 18:59:38 +08:00
}
2024-04-12 16:14:50 +08:00
/**
* 获取系统信息 ( 刷新 )
* 为了减少资源消耗,只刷新部分数据
* @ return SystemInfoHelper
*/
public static function getSysInfoFre () : SystemInfoHelper
2024-04-10 18:59:38 +08:00
{
2024-04-12 16:14:50 +08:00
$sysInfo = new SystemInfoHelper ();
$sysInfo -> detectServerTime ();
$sysInfo -> detectServerUptime ();
if ( $sysInfo -> osType === 1 ) {
$sysInfo -> detectLoad ();
} else {
$sysInfo -> load = - 1 ;
}
$sysInfo -> detectCpuUsage ();
$sysInfo -> detectRamUsage ();
$sysInfo -> detectDataMountPoint ();
return $sysInfo ;
2024-04-10 18:59:38 +08:00
}
}