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.
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.
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
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.
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 // )
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.
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() 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.
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() 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
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!