我们的PHP在执行的时候,其实可以得到很多与当前系统相关的信息。就像很多开源CMS在安装的时候一般都会检测一些环境信息,这些信息可以很方便的动态获取。脚本文件运行时的系统用户相关信息首先我们来看一下获取一些与当前系统相关的用户信息。这个用户信息就是我们系统运行php脚本使用的系统用户。echo'当前脚本所有者:'.get_current_user(),PHP_EOL;//当前脚本所有者:zhangyueecho'当前脚本所属组:'.getmygid(),PHP_EOL;//当前脚本所属组:20echo'当前脚本所属用户:'。getmuid(),PHP_EOL;//当前脚本的用户拥有者:501看得见吗?其实这三个函数就是Linux中对应的文件属主和组。get_current_user()返回用户名,getmuid()返回用户的UID。它们都对应于同一个用户。getmygid()返回当前用户所属的用户组。这组函数可以让我们获取系统的innode信息,当前脚本运行时的进程ID,服务接口类型,运行PHP的操作系统信息,资源使用情况。echo'当前脚本的索引节点:'.getmyinode(),PHP_EOL;//当前脚本的索引节点:8691989143echo'当前脚本的进程ID:'.getmypid(),PHP_EOL;//进程当前脚本的ID:1854//Nginx:当前脚本的进程ID:711(php-fpm的进程ID)echo"webserver与PHP的接口类型:".php_sapi_name(),PHP_EOL;//web之间的接口类型server和PHP:cli//Nginx:webserver和PHP的接口类型:fpm-fcgiecho"SystemrunningPHP:".php_uname("a"),PHP_EOL;//SystemrunningPHP:DarwinzhangyuedeMBP19.4.0DarwinKernelVersion19.4.0:太平洋标准时间2020年3月4日星期三22:28:40;root:xnu-6153.101.6~15/RELEASE_X86_64x86_64//echo"SystemrunningPHP:".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()返回的是当前正在执行的processID在网页中访问时返回PHP-FPM的进程ID。同样的,php_sapi_name()也会根据当前的运行环境返回不同的内容。php_uname()的默认参数是'a',表示返回完整的操作系统信息。它还有其他参数可以返回单独的不同信息,或者当我们只需要知道当前运行的是什么系统时,直接使用PHP_OS常量会更方便。getrusage()可以返回系统资源的状态,比如ru_nswap就是系统当前swap交换区的使用状态,不过这些参数就不详细解释了,毕竟这个函数还是比较少用的。获取PHP及相关扩展的版本信息echo"CurrentPHPversion:".phpversion(),PHP_EOL;//CurrentPHPversion:7.3.0echo"CurrentPHPversion:".PHP_VERSION,PHP_EOL;//CurrentPHPversion:7.3.0echo"当前扩展版本(Swoole):".phpversion('swoole'),PHP_EOL;//当前扩展版本(Swoole):4.4.12echo"当前Zend引擎PHP版本:".zend_version(),PHP_EOL;//当前PHPzend引擎版本: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";}p??hpversion()在没有参数的情况下,作用和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.//nginxset_time_limit(84600)environment;//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。获取当前用户.phphttps://www.php.net/manual/zh/function.getmuid.phphttps://www.php.net/manual/zh/function.getmygid.phphttps://www.php。net/manual/zh/function.getmyinode.phphttps://www.php.net/manual/zh/function.getmypid.phphttps://www.php.net/manual/zh/function.getrusage.phphttps://www.php.net/manual/en/function.php-sapi-name.phphttps://www.php.net/manual/en/function.php-uname.phphttps://www.php.net/manual/zh/function.phpversion.phphttps://www.php.net/manual/zh/function.set-time-limit.phphttps://www.php.net/manual/zh/function.zend-version.phphttps://www.php.net/manual/zh/function.getlastmod.php各媒体平台均可搜索【硬核项目经理】
