中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP怎么獲取當前運行腳本的系統相關信息

發布時間:2021-09-08 16:46:31 來源:億速云 閱讀:206 作者:chen 欄目:大數據

這篇文章主要講解了“PHP怎么獲取當前運行腳本的系統相關信息”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“PHP怎么獲取當前運行腳本的系統相關信息”吧!

關于當前PHP腳本運行時系統信息相關函數

我們的 PHP 在執行的時候,其實可以獲取到非常多的當前系統相關的信息。就像很多開源的 CMS 一般會在安裝的時候來檢測一些環境信息一樣,這些信息都是可以方便地動態獲取的。

腳本文件運行時的系統用戶相關信息

首先,我們來看看獲取當前系統相關的一些用戶信息。這個用戶信息就是我們系統運行 php 腳本時所使用的系統用戶。

echo '當前腳本擁有者:' . get_current_user(), PHP_EOL;
// 當前腳本擁有者:zhangyue

echo '當前腳本屬組:' . getmygid(), PHP_EOL;
// 當前腳本屬組:20

echo '當前腳本的用戶屬主:' . getmyuid(), PHP_EOL;
// 當前腳本的用戶屬主:501

看出來了嘛?其實這三個函數就是對應的 Linux 中的文件擁有者、所屬組,get_current_user() 返回的是用戶名,getmyuid() 返回的是用戶的 UID ,它們兩個是對應的同一個用戶。getmygid() 則返回的是當前用戶所屬的用戶組。

獲取當前運行腳本的系統相關信息

這一組函數可以讓我們獲得系統的 innode 信息、當前腳本運行時的 進程ID 、服務接口類型、運行 PHP 的操作系統信息以及資源使用情況。

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
// )

從注釋中,我們可以看出,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.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() 在沒有參數的情況下和 PHP_VERSION 常量的效果是一樣的,返回的是當前運行的 PHP 的版本號,但是,phpversion() 可以給一個擴展組件名的參數,這樣,它就可以返回這個擴展組件的版本號。就像例子中,我們獲取了當前環境下 Swoole 的版本號。zend_version() 就是很簡單的返回了當前運行環境中的 Zend引擎 版本號。

version_compare() 可以幫助我們方便地進行版本號的對比。它是以逗號進行分隔進行的版本對比,也就是說,我們自己定義的字符串版本號都可以使用它來進行對比。具體的對比規則可以參考官方文檔。

當前腳本文件的修改時間及腳本運行時間

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() 非常簡單,就是返回當前運行的這個 PHP 文件最后被修改的時間。而 set_time_limit() 相信大家就不陌生了。在默認情況下,web請求都不會持續很長時間就會主動斷開。比如在 php.ini 文件中,我們默認定義的 max_execution_time 是30秒,當一個請求消耗的時候超過這個時間后,請求就會斷開。不過,總會有一些請求是確實需要我們消耗更長的時間來執行的,比如說生成 Excel 之類的文檔往往就需要更長的時間。這個時候,我們就可以使用 set_time_limit() 來設置腳本最大執行時間來延長web請求的執行超時時間。

感謝各位的閱讀,以上就是“PHP怎么獲取當前運行腳本的系統相關信息”的內容了,經過本文的學習后,相信大家對PHP怎么獲取當前運行腳本的系統相關信息這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

兴国县| 桐庐县| 柳河县| 肇源县| 乐清市| 南陵县| 邮箱| 易门县| 铜陵市| 巧家县| 寿光市| 玉环县| 隆子县| 宁晋县| 墨江| 汪清县| 横峰县| 桂林市| 台北县| 石城县| 邳州市| 松阳县| 呼伦贝尔市| 岐山县| 隆子县| 安康市| 平邑县| 翁牛特旗| 清水河县| 浦东新区| 本溪| 乡城县| 舟山市| 云南省| 武陟县| 澎湖县| 渝北区| 梨树县| 阳新县| 容城县| 海盐县|