成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Stream上下文怎么操作-創(chuàng)新互聯(lián)

本篇內(nèi)容介紹了“Stream上下文怎么操作”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、田家庵網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城網(wǎng)站制作、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為田家庵等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

Stream是什么

Stream可以通過://方式來引用。其中是包裝類的名字,中的內(nèi)容是由包裝類的語法指定,不同的包裝類的語法會有所不同。

PHP默認的包裝類是file://,也就是說我們在訪問文件系統(tǒng)的時候,其實就是在使用一個stream。我們可以通過下面兩種方式來讀取文件中的內(nèi)容,readfile(‘/path/to/somefile.txt’)或者readfile(‘file:///path/to/somefile.txt’),這兩種方式是等效的。假如你是使用readfile(‘http://google.com/’),那么PHP會選取HTTPstream包裝類來進行操作。

正如上文所述,PHP提供了不少內(nèi)建的包轉(zhuǎn)類,protocol以及filter。按照下文所述的方式,可以查詢到本機所支持的包裝類:

print_r(stream_get_transports());

print_r(stream_get_wrappers());

print_r(stream_get_filters());

在我機器上的輸出結(jié)果為:

Array

(

[0]=>tcp

[1]=>udp

[2]=>unix

[3]=>udg

[4]=>ssl

[5]=>sslv3

[6]=>sslv2

[7]=>tls

)

Array

(

[0]=>https

[1]=>ftps

[2]=>compress.zlib

[3]=>compress.bzip2

[4]=>php

[5]=>file

[6]=>glob

[7]=>data

[8]=>http

[9]=>ftp

[10]=>zip

[11]=>phar

)

Array

(

[0]=>zlib.*

[1]=>bzip2.*

[2]=>convert.iconv.*

[3]=>string.rot13

[4]=>string.toupper

[5]=>string.tolower

[6]=>string.strip_tags

[7]=>convert.*

[8]=>consumed

[9]=>dechunk

[10]=>mcrypt.*

[11]=>mdecrypt.*

)

提供的功能非常多,看上去還不錯吧?

除了上述內(nèi)建的Stream,我們還可以為AmazonS3,MSExcel,GoogleStorage,Dropbox甚至Twitter編寫更多的第三方的Stream。

Stream上下文怎么操作

context是一組stream相關(guān)的參數(shù)或選項,使用context可以修改或增強包裝類的行為。例如使用context來修改HTTP包裝器是一個常用到的使用場景。這樣我們就可以不使用cURL工具,就能完成一些簡單的網(wǎng)絡(luò)操作。下面是一個例子:

$opts=array(

'http'=>array(

'method'=>"POST",

'header'=>"Auth:SecretAuthTokenrn".

"Content-type:application/x-www-form-urlencodedrn".

"Content-length:".strlen("HelloWorld"),

'content'=>'HelloWorld'

)

);

$default=stream_context_get_default($opts);

readfile('http://localhost/dev/streams/php_input.php');

首先要定義一個optionsarray,這是個二位數(shù)組,可以通過$array['wrapper']['option_name']的形式來訪問其中的參數(shù)。(注意每個包裝類中context的options是不同的)。然后調(diào)用stream_context_get_default()來設(shè)置這些option,stream_context_get_default()同時還會將默認的context作為結(jié)果返回回來。設(shè)置完成后,接下來調(diào)用readfile(),就會應(yīng)用剛才設(shè)置好的context來抓取內(nèi)容。

在上面的例子中,內(nèi)容被嵌入到request的body中,這樣遠端的腳本就可以使用php://input來讀取這些內(nèi)容。同時,我們還能使用apache_request_headers()來獲取request的header,如下所示:

Array

(

[Host]=>localhost

[Auth]=>SecretAuthToken

[Content-type]=>application/x-www-form-urlencoded

[Content-length]=>11

)

在上面的例子中是修改默認context的參數(shù),當然我們也可以創(chuàng)建一個新的context,進行交替使用。

$alternative=stream_context_create($other_opts);

readfile('http://localhost/dev/streams/php_input.php',false,$alternative);

結(jié)論

我們怎樣在現(xiàn)實世界中駕馭stream的強大力量呢?使用stream能為我們的程序帶來什么現(xiàn)實的好處?正如前文介紹的那樣,stream對所有文件系統(tǒng)相關(guān)的功能進行了抽象,所以我第一個想到的應(yīng)用場景是使用虛擬文件系統(tǒng)的包裝類來訪問PaaS供應(yīng)商提供的服務(wù),比如說訪問HeroKu或者AppFog,它們實際上都沒有真正文件系統(tǒng)。使用stream只要對我們的應(yīng)用程序稍作修改,就可以將其移植到云端。接下來–在我的下一篇文章中–我將介紹如何編寫自定義的包裝類以實現(xiàn)對特殊文件格式和編碼格式的操作。

“Stream上下文怎么操作”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

網(wǎng)頁題目:Stream上下文怎么操作-創(chuàng)新互聯(lián)
分享路徑:http://jinyejixie.com/article16/cccpdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站設(shè)計網(wǎng)站設(shè)計公司、動態(tài)網(wǎng)站外貿(mào)建站、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
松江区| 互助| 武宣县| 全州县| 日喀则市| 寿阳县| 容城县| 财经| 白水县| 新源县| 全州县| 白山市| 博客| 武陟县| 紫阳县| 平凉市| 筠连县| 吉林省| 汨罗市| 乾安县| 仁化县| 乌苏市| 山东省| 安龙县| 吉隆县| 屏边| 乡宁县| 怀宁县| 吉水县| 新乡市| 乡城县| 西安市| 富顺县| 沙坪坝区| 镇巴县| 军事| 雷波县| 嘉黎县| 尉氏县| 宁陵县| 洪洞县|