echo'当前脚本拥有者:'.get_current_user(),PHP_EOL;//当前脚本拥有者:zhangyueecho'当前脚本属组:'.getmygid(),PHP_EOL;//当前脚本属组:20echo'当前脚本的用户属主:'.getmyuid(),PHP_EOL;//当前脚本的用户属主:501
看出来了嘛?实在这三个函数便是对应的 Linux 中的文件拥有者、所属组,get_current_user() 返回的是用户名,getmyuid() 返回的是用户的 UID ,它们两个是对应的同一个用户。getmygid() 则返回的是当前用户所属的用户组。
获取当前运行脚本的系统干系信息这一组函数可以让我们得到系统的 innode 信息、当前脚本运行时的 进程ID 、做事接口类型、运行 PHP 的操作系统信息以及资源利用情形。
echo'当前脚本的索引节点:'.getmyinode(),PHP_EOL;//当前脚本的索引节点:8691989143echo'当前脚本的进程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-fcgiecho"运行PHP的系统:".php_uname("a"),PHP_EOL;//运行PHP的系统:DarwinzhangyuedeMBP19.4.0DarwinKernelVersion19.4.0:WedMar422:28:40PST2020;root:xnu-6153.101.6~15/RELEASE_X86_64x86_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//)
从注释中,我们可以看出,getmypid() 在利用命令行时返回的是当前实行的 进程ID ,在网页中访问的时候返回的是 PHP-FPM 的 进程ID 。同理,php_sapi_name() 也会根据当前运行的环境返回不同的内容。
php_uname() 默认参数是就 'a' ,意思是返回完全的操作系统信息。它还有其它的参数可以返回单独的不同的信息,或者我们只须要知道当前操作是什么系统时,就直策应用 PHP_OS 常量会更加的方便。
getrusage() 能够返回系统资源的情形,比如 ru_nswap 便是系统当前的 swap 交流区的利用情形,但是这些参数并没有很详细的解释,毕竟这个函数还是利用的比较少的。
获取 PHP 及干系扩展组件的版本信息echo"当前的PHP版本:".phpversion(),PHP_EOL;//当前的PHP版本:7.3.0echo"当前的PHP版本:".PHP_VERSION,PHP_EOL;//当前的PHP版本:7.3.0echo"当前某个扩展的版本(Swoole):".phpversion('swoole'),PHP_EOL;//当前某个扩展的版本(Swoole):4.4.12echo"当前的PHP的zend引擎版本:".zend_version(),PHP_EOL;//当前的PHP的zend引擎版本:3.3.0-devif(version_compare(PHP_VERSION,'7.0.0')>=0){echo'我的版今年夜于7.0.0,当前版本是:'.PHP_VERSION."\n";}else{echo'我的版本还在5,要赶紧升级了,当前版本是:'.PHP_VERSION."\n";}
phpversion() 在没有参数的情形下和 PHP_VERSION 常量的效果是一样的,返回的是当前运行的 PHP 的版本号,但是,phpversion() 可以给一个扩展组件名的参数,这样,它就可以返回这个扩展组件的版本号。就像例子中,我们获取了当前环境下 Swoole 的版本号。zend_version() 便是很大略的返回了当前运行环境中的 Zend引擎 版本号。
version_compare() 可以帮助我们方便地进行版本号的比拟。它因此逗号进行分隔进行的版本比拟,也便是说,我们自己定义的字符串版本号都可以利用它来进行比拟。详细的比拟规则可以参考官方文档。
当前脚本文件的修正韶光及脚本运行韶光echo"当前脚本文件的末了修正韶光:".date("Y-m-dH:i:s.",getlastmod()),PHP_EOL;//当前脚本文件的末了修正韶光:2020-06-0108:55:49.//nginx环境下set_time_limit(84600);//while(1){//}
getlastmod() 非常大略,便是返回当前运行的这个 PHP 文件末了被修正的韶光。而 set_time_limit() 相信大家就不陌生了。在默认情形下,web要求都不会持续很永劫光就会主动断开。比如在 php.ini 文件中,我们默认定义的 max_execution_time 是30秒,当一个要求花费的时候超过这个韶光后,要求就会断开。不过,总会有一些要求是确实须要我们花费更长的韶光来实行的,比如说天生 Excel 之类的文档每每就须要更长的韶光。这个时候,我们就可以利用 set_time_limit() 来设置脚本最大实行韶光来延长web要求的实行超时时间。
测试代码:
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
参考文档:
https://www.php.net/manual/zh/function.get-current-user.php
https://www.php.net/manual/zh/function.getmyuid.php
https://www.php.net/manual/zh/function.getmygid.php
https://www.php.net/manual/zh/function.getmyinode.php
https://www.php.net/manual/zh/function.getmypid.php
https://www.php.net/manual/zh/function.getrusage.php
https://www.php.net/manual/zh/function.php-sapi-name.php
https://www.php.net/manual/zh/function.php-uname.php
https://www.php.net/manual/zh/function.phpversion.php
https://www.php.net/manual/zh/function.set-time-limit.php
https://www.php.net/manual/zh/function.zend-version.php
https://www.php.net/manual/zh/function.getlastmod.php