Heim > Backend-Entwicklung > PHP-Problem > Detaillierte Einführung in verwandte Funktionen zu Systeminformationen bei der Ausführung von PHP-Skripten

Detaillierte Einführung in verwandte Funktionen zu Systeminformationen bei der Ausführung von PHP-Skripten

醉折花枝作酒筹
Freigeben: 2023-03-10 11:48:02
Original
1536 Leute haben es durchsucht

In diesem Artikel erhalten Sie eine detaillierte Einführung in die Funktionen im Zusammenhang mit Systeminformationen, wenn das aktuelle PHP-Skript ausgeführt wird. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Detaillierte Einführung in verwandte Funktionen zu Systeminformationen bei der Ausführung von PHP-Skripten

Wenn unser PHP ausgeführt wird, können wir tatsächlich viele Informationen zum aktuellen System erhalten. Wie viele Open-Source-CMS erkennen sie im Allgemeinen einige Umgebungsinformationen während der Installation. Diese Informationen können einfach und dynamisch abgerufen werden.

Systembenutzerbezogene Informationen, wenn die Skriptdatei ausgeführt wird

Lassen Sie uns zunächst einen Blick darauf werfen, wie wir einige Benutzerinformationen zum aktuellen System erhalten. Bei diesen Benutzerinformationen handelt es sich um den Systembenutzer, den unser System beim Ausführen von PHP-Skripten verwendet.

echo '当前脚本拥有者:' . get_current_user(), PHP_EOL;
// 当前脚本拥有者:zhangyue

echo '当前脚本属组:' . getmygid(), PHP_EOL;
// 当前脚本属组:20

echo '当前脚本的用户属主:' . getmyuid(), PHP_EOL;
// 当前脚本的用户属主:501
Nach dem Login kopieren

Hast du es gesehen? Tatsächlich sind diese drei Funktionen die entsprechenden Dateieigentümer und Gruppen in Linux. get_current_user() gibt den Benutzernamen zurück, und getmyuid() gibt die UID des Benutzers zurück. getmygid() gibt die Benutzergruppe zurück, zu der der aktuelle Benutzer gehört.

Systembezogene Informationen zum aktuell ausgeführten Skript abrufen

Mit diesem Funktionssatz können wir die Innode-Informationen des Systems, die Prozess-ID, wenn das aktuelle Skript ausgeführt wird, den Serviceschnittstellentyp und die Betriebssysteminformationen abrufen Ausführen von PHP und Ressourcennutzung.

echo '当前脚本的索引节点:' . getmyinode(), PHP_EOL;
// 当前脚本的索引节点:8691989143

echo '当前脚本的进程ID:' . getmypid(), PHP_EOL;
// 当前脚本的进程ID:1854
// Nginx:当前脚本的进程ID:711(php-fpm的进程ID)

echo "web服务器和PHP之间的接口类型:" . php_sapi_name(), PHP_EOL;
// web服务器和PHP之间的接口类型:cli
// Nginx:web服务器和PHP之间的接口类型:fpm-fcgi

echo "运行 PHP 的系统:" . php_uname("a"), PHP_EOL;
// 运行 PHP 的系统:Darwin zhangyuedeMBP 19.4.0 Darwin Kernel Version 19.4.0: Wed Mar  4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64 x86_64
//

echo "运行PHP的系统:" . PHP_OS, PHP_EOL;
// 运行 PHP 的系统:Darwin

// 当前脚本的资源使用情况
print_r(getrusage());
// Array
// (
//     [ru_oublock] => 0
//     [ru_inblock] => 0
//     [ru_msgsnd] => 0
//     [ru_msgrcv] => 0
//     [ru_maxrss] => 16809984
//     [ru_ixrss] => 0
//     [ru_idrss] => 0
//     [ru_minflt] => 4410
//     [ru_majflt] => 1
//     [ru_nsignals] => 0
//     [ru_nvcsw] => 0
//     [ru_nivcsw] => 86
//     [ru_nswap] => 0
//     [ru_utime.tv_usec] => 41586
//     [ru_utime.tv_sec] => 0
//     [ru_stime.tv_usec] => 41276
//     [ru_stime.tv_sec] => 0
// )
Nach dem Login kopieren

Aus den Kommentaren können wir ersehen, dass getmypid() bei Verwendung der Befehlszeile die Prozess-ID der aktuellen Ausführung zurückgibt und beim Zugriff auf der Webseite die Prozess-ID von PHP-FPM zurückgibt. Auf die gleiche Weise gibt php_sapi_name() je nach aktueller Betriebsumgebung auch unterschiedliche Inhalte zurück.

php_uname() Der Standardparameter ist „a“, was bedeutet, dass vollständige Betriebssysteminformationen zurückgegeben werden. Es gibt auch andere Parameter, die separate und unterschiedliche Informationen zurückgeben können. Wenn wir nur wissen müssen, auf welchem ​​System wir gerade arbeiten, ist es bequemer, die PHP_OS-Konstante direkt zu verwenden.

getrusage() kann beispielsweise den Status der Systemressourcen zurückgeben, aber diese Parameter werden nicht im Detail erläutert. Schließlich wird diese Funktion noch relativ selten verwendet .

Versionsinformationen von PHP und zugehörigen Erweiterungskomponenten abrufen

echo "当前的PHP版本:" . phpversion(), PHP_EOL;
// 当前的PHP版本:7.3.0

echo "当前的PHP版本:" . PHP_VERSION, PHP_EOL;
// 当前的PHP版本:7.3.0

echo "当前某个扩展的版本(Swoole):" . phpversion('swoole'), PHP_EOL;
// 当前某个扩展的版本(Swoole):4.4.12

echo "当前的PHP的zend引擎版本:" . zend_version(), PHP_EOL;
// 当前的PHP的zend引擎版本:3.3.0-dev

if (version_compare(PHP_VERSION, '7.0.0') >= 0) {
    echo '我的版本大于7.0.0,当前版本是:' . PHP_VERSION . "\n";
} else {
    echo '我的版本还在5,要赶紧升级了,当前版本是:' . PHP_VERSION . "\n";
}
Nach dem Login kopieren

phpversion() hat den gleichen Effekt wie die PHP_VERSION-Konstante ohne Parameter. Sie kann jedoch die Versionsnummer des aktuell ausgeführten PHP zurückgeben ein Parameter für den Namen der Erweiterungskomponente, sodass die Versionsnummer dieser Erweiterungskomponente zurückgegeben werden kann. Genau wie im Beispiel erhalten wir die Versionsnummer von Swoole in der aktuellen Umgebung. zend_version() gibt einfach die Versionsnummer der Zend-Engine in der aktuell ausgeführten Umgebung zurück.

version_compare() kann uns dabei helfen, Versionsnummern bequem zu vergleichen. Es handelt sich um einen durch Kommas getrennten Versionsvergleich, was bedeutet, dass jede von uns definierte Zeichenfolgenversionsnummer damit verglichen werden kann. Spezifische Vergleichsregeln finden Sie in der offiziellen Dokumentation.

Die Änderungszeit und die Skriptlaufzeit der aktuellen Skriptdatei

echo "当前脚本文件的最后修改时间: " . date("Y-m-d H:i:s.", getlastmod()), PHP_EOL;
// 当前脚本文件的最后修改时间: 2020-06-01 08:55:49.

// nginx环境下
set_time_limit(84600);
// while(1){

// }
Nach dem Login kopieren

getlastmod() ist sehr einfach, es gibt die letzte Änderungszeit der aktuell ausgeführten PHP-Datei zurück. Und set_time_limit() ist meiner Meinung nach jeder damit vertraut. Standardmäßig dauern Webanfragen nicht lange, bevor sie aktiv getrennt werden.

In der Datei php.ini ist beispielsweise die von uns standardmäßig definierte maximale Ausführungszeit 30 Sekunden. Wenn eine Anfrage mehr als diese Zeit in Anspruch nimmt, wird die Anfrage getrennt. Allerdings gibt es immer wieder Anfragen, deren Ausführung wirklich länger dauert. Beispielsweise dauert die Erstellung von Dokumenten wie Excel oft länger.

Zu diesem Zeitpunkt können wir set_time_limit() verwenden, um die maximale Ausführungszeit des Skripts festzulegen, um das Ausführungszeitlimit von Webanforderungen zu verlängern.

Testcode:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202006/source/%E5%85%B3%E4%BA%8E%E5%BD%93%E5%89%8DPHP%E8%84%9A%E6%9C%AC%E8%BF%90%E8%A1%8C%E6%97%B6%E7%B3%BB%E7%BB%9F%E4%BF%A1%E6%81%AF%E7%9B%B8%E5%85%B3%E5%87%BD%E6%95%B0.php
Nach dem Login kopieren

Empfohlenes Lernen: php-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in verwandte Funktionen zu Systeminformationen bei der Ausführung von PHP-Skripten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage