php-cli
在前面的簡單介紹中,我們已經(jīng)了解了有php-cli這個模式,現(xiàn)在我們繼續(xù)詳細了解下php-cli和傳統(tǒng)web模式不一樣的地方吧
超時時間
在php-cli中,默認超時時間為永久不超時,但是可以通過set_time_limit
設(shè)置超時時間.
<?php
set_time_limit(1);
while (1){
}
buffer緩沖
在常規(guī)web模式中,echo,var_dump,phpinfo等輸出語句/函數(shù),默認情況是先進入php緩沖區(qū),等緩沖區(qū)到達一定數(shù)量,才開始傳輸給web服務(wù)器的,但是在php-cli模式中,默認關(guān)閉buffer,直接輸出,例如以下代碼:
<?php
ob_start();//開啟buffer緩沖區(qū) php-cli下默認關(guān)閉buffer,由于web訪問測試較麻煩,該段代碼只為了查看以及測試緩沖區(qū)的作用,在web模式下,默認開啟,無需手動開啟,可自行配置
for($i=0;$i<1000;$i++){
echo $i;
sleep(1);
if($i%10==0){
//當(dāng)i為10的倍數(shù)時,將直接結(jié)束并輸出緩沖區(qū)的數(shù)據(jù),然后再次開啟緩沖區(qū)
ob_end_flush();
ob_start();
}
}
也可通過ob_get_contents函數(shù)獲取緩沖區(qū)內(nèi)容,ob緩沖系列函數(shù)可自行搜索了解
標準輸入/輸出/錯誤
執(zhí)行一個命令行都存在3個標準文件(linux一切皆文件):
- 標準輸入 (stdin,通常對應(yīng)終端的鍵盤,進程可通過該文件獲取鍵盤輸入的數(shù)據(jù))
- 標準輸出 (stdout,對應(yīng)終端的屏幕,進程通過寫入數(shù)據(jù)到該文件,將數(shù)據(jù)顯示到屏幕)
- 標準錯誤 (stderr,對應(yīng)終端的屏幕,進程通過寫入數(shù)據(jù)到該文件,將錯誤信息顯示到屏幕)
在php-cli命令行下,可通過以上3個文件句柄進行一系列的邏輯操作,比如:
啟動php文件,監(jiān)聽標準輸入,獲取到輸入的網(wǎng)址,php再進行網(wǎng)址的數(shù)據(jù)請求/接收 等等操作 而在常規(guī)web模式下,標準輸出會被攔截echo var_dump等輸出函數(shù)其實就是stdout,但是在常規(guī)web訪問下被重定向到了web服務(wù)器,然后由web服務(wù)器輸出
php-cli 專屬擴展
php有些擴展在常規(guī)web下運行時沒用/沒有意義的 例如:
- swoole擴展
- socket擴展
- 等