dimtrov/sysinfo

一个轻量级工具,用于检索关于您的PHP环境的各种信息

0.0.1 2022-09-03 02:23 UTC

This package is auto-updated.

Last update: 2024-08-27 18:14:31 UTC


README

一个轻量级工具,用于检索关于您的PHP环境的各种信息

Coding Standards PHPStan Static Analysis PHPStan level Coverage Status Latest Stable Version License Total Downloads

dimtrov/sysinfo 是一个简单的库,用于获取PHP代码运行环境的系统信息、指标和可用资源。

亮点

  • 简单API
  • 框架无关
  • Composer就绪,[PSR-2] 和 [PSR-4] 兼容

系统要求

PHP >= 7.4

此库使用一些原生PHP函数,如 shell_execphp_unamedisk_total_spacedisk_free_spacememory_get_usagememory_get_peak_usage,这些函数可能被某些共享主机禁用。

安装

# Install the package
composer require dimtrov/sysinfo

使用

基础

use Dimtrov\Sysinfo;

$sysinfo = new Sysinfo();


$sysinfo->cpuArchitecture();  // Intel x64
$sysinfo->cpuCores();  // 2
$sysinfo->cpuFree();  // 
$sysinfo->cpuFrequency();  // 2.90GHz
$sysinfo->cpuName();  // Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
$sysinfo->cpuProcessors();  // 4
$sysinfo->cpuSpeed();  // 1.11 GHz
$sysinfo->cpuVendor();  // Intel

$sysinfo->diskCapacity();  // 998.87 GB
$sysinfo->diskCountPartitions(); 3
$sysinfo->diskFree(); // 310 G
$sysinfo->diskPartitions(); // [C:\, D:\, E:\]
$sysinfo->diskPartitionsSpaces(); // ["C:\" => "440 GB", "D:\" => "244 GB", "E:\" => "244GB"]
$sysinfo->diskTotal(); // 440GB
$sysinfo->diskUsed(); // 190GB
$sysinfo->diskUsedPercentage(); // 25%

$sysinfo->executionTimeLimit(); // 60s
$sysinfo->hostname(); // dimtrovich
$sysinfo->kernel(); // 
$sysinfo->memoryLimit(); // 8 MB
$sysinfo->memoryUsage(); // 2.3 MB
$sysinfo->os(); // Windows
$sysinfo->osRelease(); // Microsoft Windows 11 Pro

$sysinfo->ramCount(); // 2
$sysinfo->ramFree();  // 1.3 GB
$sysinfo->ramList(); // [4GB, 4GB]
$sysinfo->ramTotal(); // 8GB
$sysinfo->ramUsedPercentage(); // 91%

$sysinfo->ipAddress(); // 192.168.100.137
$sysinfo->macAddress(); // D7-81-D4-C2-F2-C6

静态调用

您也可以通过函数的静态调用获取信息,例如

use Dimtrov\Sysinfo;

Sysinfo::cpuArchitecture();  // Intel x64
Sysinfo::cpuCores();  // 2
Sysinfo::cpuFree();  // 
Sysinfo::cpuFrequency();  // 2.90GHz
Sysinfo::cpuName();  // Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
// etc...

分组信息

您可以通过分类访问特定信息。例如,您可以一次性获取所有CPU信息

use Dimtrov\Sysinfo;

Sysinfo::cpu();  // return all the CPU informations (architecture, cores, free, frequency, name, processors, speed, vendor) in array

Sysinfo::ram();  // return all the RAM informations (count, free, freePercentage, list, total, used, usedPercentage) in array

// 

$sysinfo = new Sysinfo();
$sysinfo->ram(); // A instance call is also available

还可以通过 all() 方法获取所有信息。它返回一个包含所有系统信息的庞大数组

警告

截至今天(2023年2月23日),此类仅在Windows上进行了测试。Linux和Mac的实现尚未完成,因此尚未进行测试。欢迎您提交pull请求

API

/**
 * Get informations grouped by category
 * 
 * @param bool $merge 
 *        if true return a simple array that contains all the information
 *        if false return an array of 2 dimensions that contains the informations grouped by category
 */
public function all(bool $merge = false, array $options = []): array;

/**
 * Get grouped informations about the computer
 */
public function computer(): array;

/**
 * Get grouped informations about the CPU
 */
public function cpu(bool $format = true): array;

/**
 * Get grouped informations about the HARD DISK
 */
public function disk(bool $format = true, string $partition = '/', bool $onlytotalspace = true): array;
   
 /**
 * Get grouped informations about the PHP
 */
public function php(bool $format = true): array;

/**
 * Get grouped informations about the RAM
 */
public function ram(bool $format = true): array;


/**
 * Count number of cpu cores
 */
public function cpuCores(): int;

/**
 * Retrieve a free cpu usage
 */
public function cpuFree();

/**
 * Retrieve a real frequency of processor
 *
 * @return int|string 
 *         if $format set to true, return a string like `'2GHz'` 
 *         otherwise, return a raw value in Hz like `2000000`
 */
public function cpuFrequency(bool $format = true);

/**
 * Retrieve cpu name
 */
public function cpuName(): string;

/**
 * Count number of logical processors
 */
public function cpuProcessors(): int;

/**
 * Retrieves the current rotation speed of the processor
 *
 * @return int|string 
 *         if $format set to true, return a string like `'2GHz'` 
 *         otherwise, return a raw value in Hz like `2000000`
 */
public function cpuSpeed(bool $format = true);

/**
 * Get cpu manufacturer
 */
public function cpuVendor(): string;

/**
 * Collect all the partitions of the hard drive
 */
public function diskPartitions(): array;

/**
 * Retrieve the free ram resources.
 *
 * @return int|string 
 *         if $format set to true, return a string like `'2GB'` 
 *         otherwise, return a raw value in bytes like `2000000`
 */
public function ramFree(bool $format = true);

/**
 * List the different memory bar
 * 
 * @return array<int|string> * 
 *         if $format set to true, return an array of string like `['2GB', '4GB']` 
 *         otherwise, return an array of raw value in bytes like `[2000000, 40000]`
 */
public function ramList(bool $format = true): array;

/**
 * Get the cpu architecture and bits
 */
public function cpuArchitecture(): string;

/**
 * Recovering the total storage capacity of the hard drive
 *
 * @return int|string 
 *         if $format set to true, return a string like `'2GB'` 
 *         otherwise, return a raw value in bytes like `2000000`
 */
public function diskCapacity(bool $format = true);

/**
 * Counts the number of hard disk partitions
 */
public function diskCountPartitions(): int;

/**
 * Retrieves the free storage space of a given partition of the hard drive
 *
 * @return int|string 
 *         if $format set to true, return a string like `'2GB'` 
 *         otherwise, return a raw value in bytes like `2000000`
 */
public function diskFree(bool $format = true, string $partition = '/');

/**
 * Retrieve the free resources from the total resources as a percentage.
 *
 * @return int|string 
 *         if $format set to true, return a string like `'2%'` 
 *         otherwise, return a raw value in bytes like `2`
 */
public function diskFreePercentage(bool $format = true, string $partition = '/');

/**
 * Determine the storage capacity of each partition on the hard drive
 * 
 * @return array<int|string> 
 *         if $format set to true, return an array of string like `['2GB', '4GB']` 
 *         otherwise, return an array of raw value in bytes like `[2000000, 40000]`
 */
public function diskPartitionsSpaces(bool $format = true): array;

/**
 * Recovering the total storage capacity of a given partition of the hard drive
 *
 * @return int|string 
 *         if $format set to true, return a string like `'2GB'` 
 *         otherwise, return a raw value in bytes like `2000000`
 */
public function diskTotal(bool $format = true, string $partition = '/');

/**
 * Retrieve the used resources from the total resources as a percentage.
 *
 * @return int|string 
 *         if $format set to true, return a string like `'2GB'` 
 *         otherwise, return a raw value in bytes like `2000000`
 */
public function diskUsed(bool $format = true, string $partition = '/');

/**
 * Retrieve the used resources from the total resources as a percentage.
 *
 * @return int|string 
 *         if $format set to true, return a string like `'2%'` 
 *         otherwise, return a raw value in bytes like `2`
 */
public function diskUsedPercentage(bool $format = true, string $partition = '/');

/**
 * Finds out max PHP execution time limit from php.ini
 *
 * @return int in seconds. If set to zero, no time limit is imposed.
 */
public function executionTimeLimit(): int;

/**
 * Get the OS hostname
 */
public function hostname(): string;

/**
 * Get the physical machine address
 */
public function ipAddress(int $position): string;

/**
 * Get the OS kernel
 */
public function kernel(): string;

/**
 * Get the specified position IP address
*/
public function ipAddress(int $position = 0): string;

/**
 * Get all the IPs address
 *
 * @return string[]
 */
public function ipsAddress(): array;

/**
 * Get the physical machine address
 */
public function macAddress(): string;

/**
 * Finds out PHP memory limit from php.ini
 *
 * @return int|string 
 *         if $format set to true, return a string like `'2MB'` 
 *         otherwise, return a raw value in bytes like `2000`
 */
public function memoryLimit(bool $format = true);

/**
 * Returns the amount of memory allocated to PHP
 *
 * @return int|string 
 *         if $format set to true, return a string like `'2MB'` 
 *         otherwise, return a raw value in bytes like `2000`
 */
public function memoryUsage(bool $format = true);

/**
 * Get the Os
 */
public function os(): string;

/**
 * Get the Os release
 */
public function osRelease(): string;

/**
 * Count the number of memory bars available
 */
public function ramCount(): int;

/**
 * Get the free rate of the RAM
 *
 * @return int|string 
 *         if $format set to true, return a string like `'2GB'` 
 *         otherwise, return a raw value in bytes like `2000000`
 */
public function ramFree(bool $format = true, string $partition = '/');

/**
 * Get the free rate (as percentage) of the RAM
 *
 * @return int|string 
 *         if $format set to true, return a string like `'2%'` 
 *         otherwise, return a raw value in bytes like `2`
 */
public function ramFreePercentage(bool $format = true, string $partition = '/');

/**
 * List the different memory bar
 *
 * @return array<int|string> 
 *         if $format set to true, return an array of string like `['2GB', '4GB']` 
 *         otherwise, return an array of raw value in bytes like `[2000000, 40000]`
 */
public function ramList(bool $format = true): array;

/**
 * Retrieve the total ram resources.
 *
 * @return int|string 
 *         if $format set to true, return a string like `'2GB'` 
 *         otherwise, return a raw value in bytes like `2000000`
 */
public function ramTotal(bool $format = true);

/**
 * Get the consumption rate of the RAM
 *
 * @return int|string 
 *         if $format set to true, return a string like `'2GB'` 
 *         otherwise, return a raw value in bytes like `2000000`
 */
public function ramUsed(bool $format = true);

/**
 * Get the consumption rate (as a percentage) of the RAM
 *
 * @return int|string 
 *         if $format set to true, return a string like `'2%'` 
 *         otherwise, return a raw value in bytes like `2`
 */
public function ramUsedPercentage(bool $format = true);

致谢

贡献

感谢您考虑为此包做出贡献!请创建一个pull请求,并在其中详细说明您提出的更改。

许可证

此软件包是开源软件,许可协议为 MIT许可证