亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    詳細(xì)介紹關(guān)于PHP腳本運(yùn)行時(shí)系統(tǒng)信息的相關(guān)函數(shù)

    本篇文章給大家詳細(xì)介紹關(guān)于當(dāng)前PHP腳本運(yùn)行時(shí)系統(tǒng)信息的相關(guān)函數(shù)。有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)大家有所幫助。

    詳細(xì)介紹關(guān)于PHP腳本運(yùn)行時(shí)系統(tǒng)信息的相關(guān)函數(shù)

    關(guān)于當(dāng)前PHP腳本運(yùn)行時(shí)系統(tǒng)信息相關(guān)函數(shù)

    我們的 PHP 在執(zhí)行的時(shí)候,其實(shí)可以獲取到非常多的當(dāng)前系統(tǒng)相關(guān)的信息。就像很多開(kāi)源的 CMS 一般會(huì)在安裝的時(shí)候來(lái)檢測(cè)一些環(huán)境信息一樣,這些信息都是可以方便地動(dòng)態(tài)獲取的。

    腳本文件運(yùn)行時(shí)的系統(tǒng)用戶相關(guān)信息

    首先,我們來(lái)看看獲取當(dāng)前系統(tǒng)相關(guān)的一些用戶信息。這個(gè)用戶信息就是我們系統(tǒng)運(yùn)行 php 腳本時(shí)所使用的系統(tǒng)用戶。

    echo '當(dāng)前腳本擁有者:' . get_current_user(), PHP_EOL; // 當(dāng)前腳本擁有者:zhangyue  echo '當(dāng)前腳本屬組:' . getmygid(), PHP_EOL; // 當(dāng)前腳本屬組:20  echo '當(dāng)前腳本的用戶屬主:' . getmyuid(), PHP_EOL; // 當(dāng)前腳本的用戶屬主:501

    看出來(lái)了嘛?其實(shí)這三個(gè)函數(shù)就是對(duì)應(yīng)的 Linux 中的文件擁有者、所屬組,get_current_user() 返回的是用戶名,getmyuid() 返回的是用戶的 UID ,它們兩個(gè)是對(duì)應(yīng)的同一個(gè)用戶。getmygid() 則返回的是當(dāng)前用戶所屬的用戶組。

    獲取當(dāng)前運(yùn)行腳本的系統(tǒng)相關(guān)信息

    這一組函數(shù)可以讓我們獲得系統(tǒng)的 innode 信息、當(dāng)前腳本運(yùn)行時(shí)的 進(jìn)程ID 、服務(wù)接口類型、運(yùn)行 PHP 的操作系統(tǒng)信息以及資源使用情況。

    echo '當(dāng)前腳本的索引節(jié)點(diǎn):' . getmyinode(), PHP_EOL; // 當(dāng)前腳本的索引節(jié)點(diǎn):8691989143  echo '當(dāng)前腳本的進(jìn)程ID:' . getmypid(), PHP_EOL; // 當(dāng)前腳本的進(jìn)程ID:1854 // Nginx:當(dāng)前腳本的進(jìn)程ID:711(php-fpm的進(jìn)程ID)  echo "web服務(wù)器和PHP之間的接口類型:" . php_sapi_name(), PHP_EOL; // web服務(wù)器和PHP之間的接口類型:cli // Nginx:web服務(wù)器和PHP之間的接口類型:fpm-fcgi  echo "運(yùn)行 PHP 的系統(tǒng):" . php_uname("a"), PHP_EOL; // 運(yùn)行 PHP 的系統(tǒng):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 "運(yùn)行PHP的系統(tǒng):" . PHP_OS, PHP_EOL; // 運(yùn)行 PHP 的系統(tǒng):Darwin  // 當(dāng)前腳本的資源使用情況 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() 在使用命令行時(shí)返回的是當(dāng)前執(zhí)行的 進(jìn)程ID ,在網(wǎng)頁(yè)中訪問(wèn)的時(shí)候返回的是 PHP-FPM 的 進(jìn)程ID 。同理,php_sapi_name() 也會(huì)根據(jù)當(dāng)前運(yùn)行的環(huán)境返回不同的內(nèi)容。

    php_uname() 默認(rèn)參數(shù)是就 'a' ,意思是返回完整的操作系統(tǒng)信息。它還有其它的參數(shù)可以返回單獨(dú)的不同的信息,或者我們只需要知道當(dāng)前操作是什么系統(tǒng)時(shí),就直接使用 PHP_OS 常量會(huì)更加的方便。

    getrusage() 能夠返回系統(tǒng)資源的情況,比如 ru_nswap 就是系統(tǒng)當(dāng)前的 swap 交換區(qū)的使用情況,但是這些參數(shù)并沒(méi)有很詳細(xì)的說(shuō)明,畢竟這個(gè)函數(shù)還是使用的比較少的。

    獲取 PHP 及相關(guān)擴(kuò)展組件的版本信息

    echo "當(dāng)前的PHP版本:" . phpversion(), PHP_EOL; // 當(dāng)前的PHP版本:7.3.0  echo "當(dāng)前的PHP版本:" . PHP_VERSION, PHP_EOL; // 當(dāng)前的PHP版本:7.3.0  echo "當(dāng)前某個(gè)擴(kuò)展的版本(Swoole):" . phpversion('swoole'), PHP_EOL; // 當(dāng)前某個(gè)擴(kuò)展的版本(Swoole):4.4.12  echo "當(dāng)前的PHP的zend引擎版本:" . zend_version(), PHP_EOL; // 當(dāng)前的PHP的zend引擎版本:3.3.0-dev  if (version_compare(PHP_VERSION, '7.0.0') >= 0) {     echo '我的版本大于7.0.0,當(dāng)前版本是:' . PHP_VERSION . "n"; } else {     echo '我的版本還在5,要趕緊升級(jí)了,當(dāng)前版本是:' . PHP_VERSION . "n"; }

    phpversion() 在沒(méi)有參數(shù)的情況下和 PHP_VERSION 常量的效果是一樣的,返回的是當(dāng)前運(yùn)行的 PHP 的版本號(hào),但是,phpversion() 可以給一個(gè)擴(kuò)展組件名的參數(shù),這樣,它就可以返回這個(gè)擴(kuò)展組件的版本號(hào)。就像例子中,我們獲取了當(dāng)前環(huán)境下 Swoole 的版本號(hào)。zend_version() 就是很簡(jiǎn)單的返回了當(dāng)前運(yùn)行環(huán)境中的 Zend引擎 版本號(hào)。

    version_compare() 可以幫助我們方便地進(jìn)行版本號(hào)的對(duì)比。它是以逗號(hào)進(jìn)行分隔進(jìn)行的版本對(duì)比,也就是說(shuō),我們自己定義的字符串版本號(hào)都可以使用它來(lái)進(jìn)行對(duì)比。具體的對(duì)比規(guī)則可以參考官方文檔。

    當(dāng)前腳本文件的修改時(shí)間及腳本運(yùn)行時(shí)間

    echo "當(dāng)前腳本文件的最后修改時(shí)間: " . date("Y-m-d H:i:s.", getlastmod()), PHP_EOL; // 當(dāng)前腳本文件的最后修改時(shí)間: 2020-06-01 08:55:49.  // nginx環(huán)境下 set_time_limit(84600); // while(1){  // }

    getlastmod() 非常簡(jiǎn)單,就是返回當(dāng)前運(yùn)行的這個(gè) PHP 文件最后被修改的時(shí)間。而 set_time_limit() 相信大家就不陌生了。在默認(rèn)情況下,web請(qǐng)求都不會(huì)持續(xù)很長(zhǎng)時(shí)間就會(huì)主動(dòng)斷開(kāi)。比如在 php.ini 文件中,我們默認(rèn)定義的 max_execution_time 是30秒,當(dāng)一個(gè)請(qǐng)求消耗的時(shí)候超過(guò)這個(gè)時(shí)間后,請(qǐng)求就會(huì)斷開(kāi)。不過(guò),總會(huì)有一些請(qǐng)求是確實(shí)需要我們消耗更長(zhǎng)的時(shí)間來(lái)執(zhí)行的,比如說(shuō)生成 Excel 之類的文檔往往就需要更長(zhǎng)的時(shí)間。這個(gè)時(shí)候,我們就可以使用 set_time_limit() 來(lái)設(shè)置腳本最大執(zhí)行時(shí)間來(lái)延長(zhǎng)web請(qǐng)求的執(zhí)行超時(shí)時(shí)間。

    測(cè)試代碼:

    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

    推薦學(xué)習(xí):php視頻教程

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)