Maison > développement back-end > Problème PHP > Introduction détaillée aux fonctions associées concernant les informations système lors de l'exécution de scripts PHP

Introduction détaillée aux fonctions associées concernant les informations système lors de l'exécution de scripts PHP

醉折花枝作酒筹
Libérer: 2023-03-10 11:48:02
original
1541 Les gens l'ont consulté

Cet article vous donnera une introduction détaillée aux fonctions liées aux informations système lorsque le script PHP actuel est en cours d'exécution. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Introduction détaillée aux fonctions associées concernant les informations système lors de l'exécution de scripts PHP

Lorsque notre PHP est exécuté, nous pouvons effectivement obtenir de nombreuses informations liées au système actuel. Tout comme de nombreux CMS open source, ils détectent généralement certaines informations environnementales lors de l'installation. Ces informations peuvent être obtenues facilement et dynamiquement.

Informations relatives à l'utilisateur du système lorsque le fichier de script est en cours d'exécution

Tout d'abord, examinons comment obtenir des informations utilisateur liées au système actuel. Ces informations utilisateur correspondent à l'utilisateur système utilisé par notre système lors de l'exécution de scripts php.

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

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

echo '当前脚本的用户属主:' . getmyuid(), PHP_EOL;
// 当前脚本的用户属主:501
Copier après la connexion

L'avez-vous vu ? En fait, ces trois fonctions correspondent au propriétaire et au groupe du fichier sous Linux. get_current_user() renvoie le nom d'utilisateur, et getmyuid() renvoie l'UID de l'utilisateur. Elles correspondent toutes les deux au même utilisateur. getmygid() renvoie le groupe d'utilisateurs auquel appartient l'utilisateur actuel.

Obtenir des informations relatives au système du script en cours d'exécution

Cet ensemble de fonctions nous permet d'obtenir les informations de nœud du système, l'ID de processus du script en cours quand il est en cours d'exécution, ainsi que le type d'interface de service, les informations sur le système d'exploitation et l'utilisation des ressources sur lesquelles PHP est exécuté.

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
// )
Copier après la connexion

D'après les commentaires, nous pouvons voir que getmypid() renvoie l'ID de processus de l'exécution en cours lors de l'utilisation de la ligne de commande, et renvoie l'ID de processus de PHP-FPM lorsqu'il est accessible sur la page Web. De la même manière, php_sapi_name() renverra également un contenu différent en fonction de l'environnement d'exécution actuel.

Le paramètre par défaut de php_uname() est 'a', ce qui signifie renvoyer des informations complètes sur le système d'exploitation. Il a également d'autres paramètres qui peuvent renvoyer des informations distinctes et différentes, ou lorsque nous avons simplement besoin de savoir sur quel système nous opérons actuellement, il sera plus pratique d'utiliser directement la constante PHP_OS.

getrusage() peut renvoyer l'état des ressources système. Par exemple, ru_nswap est l'utilisation de la zone de swap actuelle du système, mais ces paramètres ne sont pas expliqués en détail. Après tout, cette fonction l'est. encore utilisé relativement rarement.

Obtenir les informations de version de PHP et des composants d'extension associés

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";
}
Copier après la connexion

phpversion() a le même effet que la constante PHP_VERSION sans paramètres et renvoie le numéro de version actuel du PHP en cours d'exécution. Cependant, phpversion() peut recevoir un nom d'extension en paramètre, afin qu'il puisse renvoyer le numéro de version de l'extension. Tout comme dans l'exemple, nous obtenons le numéro de version de Swoole dans l'environnement actuel. zend_version() renvoie simplement le numéro de version du moteur Zend dans l'environnement d'exécution actuel.

version_compare() peut nous aider à comparer facilement les numéros de version. Il s'agit d'une comparaison de versions séparées par des virgules, c'est-à-dire que tout numéro de version de chaîne que nous définissons peut être comparé en l'utilisant. Pour les règles de comparaison spécifiques, veuillez vous référer à la documentation officielle.

Heure de modification et durée d'exécution du script du fichier de script actuel

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

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

// }
Copier après la connexion

getlastmod() est très simple, il renvoie l'heure de la dernière modification du fichier PHP en cours d'exécution. Et set_time_limit() je pense que tout le monde le connaît. Par défaut, les requêtes Web ne dureront pas longtemps avant d'être activement déconnectées.

Par exemple, dans le fichier php.ini, le max_execution_time que nous définissons par défaut est de 30 secondes. Lorsqu'une requête consomme plus de ce temps, la requête sera déconnectée. Cependant, il y aura toujours certaines requêtes qui prendront vraiment plus de temps à exécuter. Par exemple, la génération de documents tels qu'Excel prend souvent plus de temps.

À ce stade, nous pouvons utiliser set_time_limit() pour définir le temps d'exécution maximum du script afin de prolonger le délai d'exécution de la requête Web.

Code de test :

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
Copier après la connexion

Apprentissage recommandé : Tutoriel vidéo php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal