好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 分析php://output和php://stdout的區別

分析php://output和php://stdout的區別

熱門標簽:寧波外呼營銷系統 地圖標注專員怎么樣 電話機器人銷售主要負責什么 房產中介用的是什么外呼系統 長沙做地圖標注公司 遼寧ai電銷機器人價格 上海做外呼線路的通信公司 四川保險智能外呼系統供應商 福建銀行智能外呼系統價格

PHP包含了以php://開頭的一系列輸出輸出流,如php://stdin, php://stdout等。今天查看代碼時,忽然想到一個問題:php://output和php://stdout有什么區別?

從PHP的官方文獻中找答案,對輸入流php://stdin和php://input的解釋分別如下(輸出流的解釋過于簡略):

php://stdin

php://stdin, php://stdout and php://stderr allow direct access to the corresponding input or output stream of the PHP process. The stream references a duplicate file descriptor, so if you open php://stdin and later close it, you close only your copy of the descriptor-the actual stream referenced by STDIN is unaffected. Note that PHP exhibited buggy behavior in this regard until PHP 5.2.1. It is recommended that you simply use the constants STDIN, STDOUT and STDERR instead of manually opening streams using these wrappers.

php://stdin is read-only, whereas php://stdout and php://stderr are write-only.

php://input

php://input is a read-only stream that allows you to read raw data from the request body. In the case of POST requests, it is preferable to use php://input instead of $HTTP_RAW_POST_DATA as it does not depend on special php.ini directives. Moreover, for those cases where $HTTP_RAW_POST_DATA is not populated by default, it is a potentially less memory intensive alternative to activating always_populate_raw_post_data. php://input is not available with enctype=”multipart/form-data”.

文檔并未直接闡述兩者的區別,仔細對比可得出以下信息:1. 均是只讀流; 2. php://stdin是PHP進程的標準輸入,php://input用來讀取請求正文的原始數據。通過這些信息,該如何正確認識兩者的本質區別?

順著php://stdin進程輸入的提示,聯想PHP進程的執行過程,再結合SAPI的差異,可以得到兩者主要區別:php://stdin是PHP進程的輸入流,執行生命周期內均可能有數據流入(例如CLI下的交互式輸入);php://input是PHP執行時的外部輸入流,一般數據只能讀一次(具體看SAPI的實現)。同理可得到php://stdout和php://output的區別:php://stdout是PHP進程的標準輸出流,php://output是返回的結果數據流。

下面用代碼驗證結論:

// file: test.php
file_put_contents("php://output", "message sent by output" . PHP_EOL);
file_put_contents("php://stdout", "message sent by stdout" . PHP_EOL);
print("message sent by print" . PHP_EOL);
 
echo "SAPI:" , PHP_SAPI , PHP_EOL;

命令行執行文件,輸出如下:

message sent by output
message sent by stdout
message sent by print
SAPI:cli

瀏覽器端請求,輸出如下:

message sent by output
message sent by print
SAPI:fpm-fcgi

在命令行下,PHP進程的標準輸出流和結果輸出流均指向終端,所有消息都打印出來。在瀏覽器端,PHP進程的輸出流被忽略,只有結果數據流被發送到web服務器。同時,print和echo調用的信息都作為執行結果發往結果輸出流,所以都正常顯示。

最后再感慨一下PHP內置函數的簡潔實用,一個file_put_contents函數就搞定流寫入操作,換Java需要stream/writer一堆代碼,也省去C風格的fopen/fwrite/fclose的繁瑣。

標簽:宜春 佛山 深圳 澳門 工商登記 常德 延安 宿遷

巨人網絡通訊聲明:本文標題《分析php://output和php://stdout的區別》,本文關鍵詞  分析,php,output,和,stdout,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《分析php://output和php://stdout的區別》相關的同類信息!
  • 本頁收集關于分析php://output和php://stdout的區別的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 蝌蚪视频国产成人无码免费| 10款夜间禁用短视频软件| 一女战三男黑人发出惨叫| 美女隐私秘?无遮挡网站| 精品美女视频在线观看免费软件| 雯雯被调教系列长篇小说| 黑帮少爷爱上我泰剧全集| 一本色道久久综合亚洲精品久久| 91精品国产丝袜白色高跟鞋商品种类 | 精品伦子伦一区二区三区| 国精产品一区二区三区介绍 | 国产精品yy9299在线观看| 欧美另类熟妇XXXX久久A片| J8又粗又长又粗又硬又大| 男插女视频免费| 神农架林区| 么公又大又粗又硬又爽| 亚洲国产精品国自产拍张津瑜| 艳妇臀∴乳欲伦交换H| 久久精品re| 69免费视频| 我把班长内衣脱了摸她的胸| 护士脱了精光让人吃秘?奶| 亚洲午夜无码av| 亚洲色视频在线播放网站| 国产农村妇女一级A片村妓| 交换俱乐部娇妻奶呻吟啊视频| 亚洲狠狠婷婷综合久久久久 | 国产精品亚洲电影久久成人影院| 你把腰抬一下不然没法发动| 茄子视频在线观看免费| 一本大道久久A片免费播放| 李老汉吃嫩草开花苞小雪| 免费看曰批女人爽的视频网址| 黄大片18满岁水多| 欧美AV无码国产精品无软件| 久久99精品国产自在现线| 午夜欧洲亚洲AV永久无码精品| 嘴唇覆了上去舌头伸进去| 大老爷小丫鬟高H| 女人日批视频|