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.
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.
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
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.
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 // )
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 .
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"; }
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.
echo "当前脚本文件的最后修改时间: " . date("Y-m-d H:i:s.", getlastmod()), PHP_EOL; // 当前脚本文件的最后修改时间: 2020-06-01 08:55:49. // nginx环境下 set_time_limit(84600); // while(1){ // }
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
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!