亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

php語言

PHP中的流是什么

時(shí)間:2024-06-13 14:33:46 php語言 我要投稿
  • 相關(guān)推薦

PHP中的流是什么

  PHP是一種 HTML 內(nèi)嵌式的語言,是一種在服務(wù)器端執(zhí)行的嵌入HTML文檔的腳本語言,語言的風(fēng)格有類似于C語言,被廣泛地運(yùn)用。大家知道PHP中的流是什么嗎?下面是小編為大家搜索整理的PHP中的流是什么,希望能給大家?guī)韼椭?更多精彩內(nèi)容請及時(shí)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!

  概述

  流(streams)是PHP4.3版本引入的一個(gè)特性,主要是為了統(tǒng)一文件、sockets以及其他類似資源的工作方法。PHP4.3距今已經(jīng)有很長時(shí)間了,但是很多程序員似乎都不能正確使用PHP中的流,當(dāng)然這也包括我。以前也在一些程序中遇到過流的使用,如php://input,但是一直沒機(jī)會整理,今天就把這部分知識整理下。

  流是由PHP提供的資源,可以供我們透明的使用,而且流是一個(gè)非常強(qiáng)大的工具。適當(dāng)?shù)脑诔绦蛑惺褂昧鳎梢詫⑽覀兊某绦驇У揭粋(gè)新的高度。

  PHP手冊中對流的描述如下:

  復(fù)制代碼 代碼如下:

  Streams were introduced with PHP 4.3.0 as a way of generalizing file, network, data compression, and other operations which share a common set of functions and uses. In its simplest definition, a stream is a resource object which exhibits streamable behavior. That is, it can be read from or written to in a linear fashion, and may be able to fseek() to an arbitrary locations within the stream.

  每一種流都實(shí)現(xiàn)了一個(gè)包裝器(wrapper),包裝器包含一些額外的代碼用來處理特殊的協(xié)議和編碼。PHP提供了一些內(nèi)置的包裝器,我們也可以很輕松的創(chuàng)建和注冊自定義的包裝器。我們甚至可以使用上下文(contexts)和過濾器來改變和增強(qiáng)包裝器。

  流基礎(chǔ)知識

  PHP中流的形式如:://。是包裝器的名字,的內(nèi)容取決于不同的包裝器語法。

  默認(rèn)的包裝器是file://,也就是說每次我們訪問文件系統(tǒng)的時(shí)候都使用了流。例如,我們可以使用如下兩種方式來讀取文件:readfile('/path/to/somefile.txt')和readfile('file:///path/to/somefile.txt'),使用這兩種方式讀取文件,可以得到相同的結(jié)果。

  正如前面所說,PHP提供了一些內(nèi)置的包裝器、協(xié)議和過濾器。查看我們的機(jī)器上安裝了哪些包裝器,可以使用如下幾個(gè)函數(shù):

  復(fù)制代碼 代碼如下:

  var_dump(stream_get_transports());

  var_dump(stream_get_wrappers());

  var_dump(stream_get_filters());

  ?>

  我本地的環(huán)境輸出內(nèi)容如下:

  復(fù)制代碼 代碼如下:

  array (size=8)

  0 => string 'tcp' (length=3)

  1 => string 'udp' (length=3)

  2 => string 'unix' (length=4)

  3 => string 'udg' (length=3)

  4 => string 'ssl' (length=3)

  5 => string 'sslv3' (length=5)

  6 => string 'sslv2' (length=5)

  7 => string 'tls' (length=3)

  array (size=12)

  0 => string 'https' (length=5)

  1 => string 'ftps' (length=4)

  2 => string 'compress.zlib' (length=13)

  3 => string 'compress.bzip2' (length=14)

  4 => string 'php' (length=3)

  5 => string 'file' (length=4)

  6 => string 'glob' (length=4)

  7 => string 'data' (length=4)

  8 => string 'http' (length=4)

  9 => string 'ftp' (length=3)

  10 => string 'phar' (length=4)

  11 => string 'zip' (length=3)

  array (size=12)

  0 => string 'zlib.*' (length=6)

  1 => string 'bzip2.*' (length=7)

  2 => string 'convert.iconv.*' (length=15)

  3 => string 'string.rot13' (length=12)

  4 => string 'string.toupper' (length=14)

  5 => string 'string.tolower' (length=14)

  6 => string 'string.strip_tags' (length=17)

  7 => string 'convert.*' (length=9)

  8 => string 'consumed' (length=8)

  9 => string 'dechunk' (length=7)

  10 => string 'mcrypt.*' (length=8)

  11 => string 'mdecrypt.*' (length=10)

  另外,我們可以自定義或者使用第三方的流。

  php://包裝器

  PHP有它自己的訪問輸入/輸出(I/O)流的包裝器。PHP有基本的php://stdin,php://stdout,php://stderr包裝器對應(yīng)默認(rèn)的I/O資源。還有一個(gè)php://input流,它是一個(gè)只讀的流,流內(nèi)容是post請求的數(shù)據(jù)。當(dāng)我們將數(shù)據(jù)放在一個(gè)post請求的body體內(nèi)用來請求一個(gè)遠(yuǎn)程服務(wù)的時(shí)候,這個(gè)流特別好用。

  因?yàn)閜hp://input是最常用到的流,所以這里列出一些知識點(diǎn):

  復(fù)制代碼 代碼如下:

  1.php://input可以讀取沒有處理過的POST數(shù)據(jù)。相較于$HTTP_RAW_POST_DATA而言,它給內(nèi)存帶來的壓力較小,并且不需要特殊的php.ini設(shè)置。php://input不能用于enctype=multipart/form-data

  2.僅當(dāng)Content-Type為application/x-www-form-urlencoded且提交方法是POST方法時(shí),$_POST數(shù)據(jù)與php://input數(shù)據(jù)才是”一致”(打上引號,表示它們格式不一致,內(nèi)容一致)的。其它情況,它們都不一致

  3.php://input讀取不到GET數(shù)據(jù)。是因?yàn)開GET數(shù)據(jù)作為query_path寫在http請求頭部(header)的PATH字段,而不是寫在http請求的body部分。

  流上下文(Stream Contexts)

  這部分內(nèi)容在編程中幾乎沒有遇到過,本人研究起來也比較吃力,大家感興趣的話可以自行百度。

  總結(jié)

  流在平時(shí)的編程中用到的并不是很多,在使用xml-rpc的時(shí)候,server端獲取client數(shù)據(jù),主要是通過php輸入流input,這是一種常用的場景。黑客在入侵網(wǎng)站的時(shí)候,也可能會用到這部分內(nèi)容。

【PHP中的流是什么】相關(guān)文章:

PHP中的trait是什么08-13

PHP中MySql操作是什么07-24

php語言是什么05-21

php是什么文件10-09

php語言的優(yōu)勢是什么09-28

PHP中多態(tài)如何實(shí)現(xiàn)09-04

PHP中實(shí)現(xiàn)頁面跳轉(zhuǎn)07-06

PHP中this關(guān)鍵字06-08

php中fsockopen用法實(shí)例06-20

PHP前端開發(fā)中的性能05-25