php中的php_sapi_name()函數(shù)是什么
在php中,我們經常會聽到一個函數(shù)名為php_sapi_name()的函數(shù),幾乎是無處不在的,那它到底是什么呢?php_sapi_name()是php中一個非常重要的函數(shù),它用來檢測當前php運行的服務器環(huán)境,以判斷所處的服務器環(huán)境類型,返回的結果可以是字符串,也可以是布爾值,甚至不會返回任何結果。
例如,我們可以用php_sapi_name()函數(shù)來檢測當前運行的php環(huán)境并返回其字符串值:
例子:
<?php echo '當前PHP運行的環(huán)境是:' . php_sapi_name(); ?>當你在本地使用Apache啟動PHP時,返回的結果是:apache2handler。 php_sapi_name()還有很多其他用法,我們來一步步學習。 php_sapi_name()用法之cli 在php中,cli模式指命令行模式,在控制臺窗口中啟動php腳本時,就會使用cli模式,此時,無法發(fā)送HTTP頭文件(如響應碼、響應頭等),這對于我們編寫命令行工具是非常有用的。 例如,我們可以用php_sapi_name()來檢測當前運行的php環(huán)境模式是否為cli模式:
例子:
<?php if(php_sapi_name() == 'cli') { echo '當前PHP模式是cli模式'; } else { echo '當前PHP模式不是cli模式'; } ?>結果:如果當前的php運行在命令行模式下,輸出“當前PHP模式是cli模式”,反之則輸出“當前PHP模式不是cli模式”。 利用php_sapi_name()來檢測CGI模式相關信息 cgimode是一種php運行模式,常見于一些服務端的腳本語言,比如Python、Perl等,如果當前的php在cgi模式下運行,我們可以通過php_sapi_name()函數(shù)來檢測運行模式。
例子:
<?php if(php_sapi_name() == 'cgi-fcgi') { echo '當前PHP運行在cgi模式下'; } else { echo '當前PHP沒有運行在cgi模式下'; } ?>結果:如果php運行在cgi-fcgi模式下,輸出“當前PHP運行在cgi模式下”,否則輸出“當前PHP沒有運行在cgi模式下”。 使用php_sapi_name()檢測FastCGI模式相關信息 FastCGI是一個高速、低延遲、多進程、多線程的CGI服務器,一般情況下,F(xiàn)astCGI和nginx一起使用,F(xiàn)astCGI服務器可以徹底解決死鎖的問題。 如果當前的php運行在FastCGI模式下,我們同樣可以通過php_sapi_name()函數(shù)來檢測運行模式。
例子:
<?php if(php_sapi_name() == 'fpm-fcgi') { echo '當前PHP運行在FastCGI模式下'; } else { echo '當前PHP沒有運行在FastCGI模式下'; } ?>結果:如果當前php運行在fpm-fcgi模式下,輸出“當前PHP運行在FastCGI模式下”,否則輸出“當前PHP沒有運行在FastCGI模式下”。 總結 通過上面的例子講解,我們知道了如何使用php_sapi_name()函數(shù)獲取php運行的環(huán)境類型,并將其用于判斷當前php運行模式,php_sapi_name()函數(shù)的重要性也因此變得不言而喻。