国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP中的“流”(stream)簡(jiǎn)介

kid143 / 1610人閱讀

摘要:例引用了文件描述符允許讀寫臨時(shí)數(shù)據(jù)。注意丟失了第一個(gè)數(shù)據(jù)包輸出使用過(guò)濾器在使用,,之類的函數(shù)使,可以使用過(guò)濾器應(yīng)用在打開的上寫入時(shí)用函數(shù)處理所有的流數(shù)據(jù)也可以使用下面的方式設(shè)置上下文我們模擬了一個(gè)包查看的會(huì)顯示結(jié)果

以下內(nèi)容整理添加自:

Understanding Streams in PHP

基礎(chǔ)

使用 :// 的格式來(lái)進(jìn)行stream的操作。

比如使用 file:// 協(xié)議來(lái)訪問(wèn)文件系統(tǒng)

readfile("/path/to/somefile.txt")
readfile("file:///path/to/somefile.txt")
//兩者是等價(jià)的

查看本地PHP內(nèi)置支持的協(xié)議和封裝協(xié)議,使用

print_r(stream_get_wrappers());

返回

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
)

獲取本地的socket支持情況和過(guò)濾器(用法在后面)支持情況使用

print_r(stream_get_transports());
print_r(stream_get_filters());

將會(huì)返回

Array
(
    [0] => tcp
    [1] => udp
    [2] => unix
    [3] => udg
    [4] => ssl
    [5] => sslv3
    [6] => sslv2
    [7] => tls
)   //transports

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.*
)   //filters

除此之外還有很多第三方庫(kù)可以選擇:

Amazon S3

MS Excel

Google Storage

Dropbox

Twitter


php:// Wrapper

PHP://Wrapper 是PHP自己的I/O流訪問(wèn)的封裝

包括
- php://stdin
- 訪問(wèn)PHP進(jìn)程相應(yīng)的輸入流,比如用在獲取cli執(zhí)行腳本時(shí)的鍵盤輸入
- php://stdout
- 訪問(wèn)PHP進(jìn)程相應(yīng)的輸出流
- php://stderr
- 訪問(wèn)PHP進(jìn)程相應(yīng)的錯(cuò)誤輸出
- php://input
- 訪問(wèn)請(qǐng)求的原始數(shù)據(jù)的只讀流
- php://output
- 只寫的數(shù)據(jù)流,以 print 和 echo 一樣的方式寫入到輸出區(qū)
- php://fd
- 允許直接訪問(wèn)指定的文件描述符。例 php://fd/3 引用了文件描述符 3
- php://memory
- 允許讀寫臨時(shí)數(shù)據(jù)。 把數(shù)據(jù)儲(chǔ)存在內(nèi)存中
- php://temp
- 同上,會(huì)在內(nèi)存量達(dá)到預(yù)定義的限制后(默認(rèn)是 2MB)存入臨時(shí)文件中
- php://filter
- 過(guò)濾器

php://stdin 是只讀的, php://stdout 和 php://stderr 是只寫的。

直接上例子:

1 php://input

//終端輸入 curl -d "Hello World" -d "foo=bar&name=John" http://localhost/dev/streams/php_input.php

//print_r($_POST)輸出。注意丟失了第一個(gè)數(shù)據(jù)包

Array
(
    [foo] => bar
    [name] => John
)

//php://input輸出

Hello World&foo=bar&name=John

2 使用過(guò)濾器

//在使用 readfile(),file_get_contents(),stream_get_contents()之類的函數(shù)使,可以使用過(guò)濾器應(yīng)用在打開的stream上

// 寫入時(shí)用 str_rot13() 函數(shù)處理所有的流數(shù)據(jù)
file_put_contents("php://filter/write=string.rot13/resource=file:///path/to/somefile.txt","Hello World");

//也可以使用下面的方式
$h = fopen("test.txt", "r");
stream_filter_append($h, "string.rot13");

// Read data and encode/decode
readfile("php://filter/read=string.toupper|string.rot13/resource=http://www.google.com");

3 設(shè)置上下文(Stream Contexts)

$opts = array(
  "http"=>array(
    "method"=>"POST",
    "header"=> "Auth: SecretAuthTokenrn" .
               "Content-type: application/x-www-form-urlencodedrn" .
               "Content-length: " . strlen("Hello World"),
    "content" => "Hello World"
  )
);
$default = stream_context_get_default($opts);
readfile("http://localhost/dev/streams/php_input.php",false,$default);
//我們模擬了一個(gè)POST包
//查看 php_input.php 的 apache_request_headers() 會(huì)顯示結(jié)果

Array
(
    [Host] => localhost
    [Auth] => SecretAuthToken
    [Content-type] => application/x-www-form-urlencoded
    [Content-length] => 11
)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/20622.html

相關(guān)文章

  • Java8特性②Stream簡(jiǎn)介

    摘要:元素序列流也提供了一個(gè)接口,可以訪問(wèn)特定元素類型的一組有序值。因?yàn)榧鲜菙?shù)據(jù)結(jié)構(gòu),所以它的主要目的是以特定的時(shí)間空間復(fù)雜度存儲(chǔ)和訪問(wèn)元素如與。請(qǐng)注意,從有序集合生成流時(shí)會(huì)保留原有的順序。由列表生成的流,其元素順序與列表一致。 流是什么 流是Java API的新成員,它允許你以聲明性方式處理數(shù)據(jù)集合(通過(guò)查詢語(yǔ)句來(lái)表達(dá),而不是臨時(shí)編寫一個(gè)實(shí)現(xiàn))。可以把它們看成遍歷數(shù)據(jù)集的高級(jí)迭代器。此外...

    EasonTyler 評(píng)論0 收藏0
  • PHP回顧之

    摘要:本文先簡(jiǎn)要跟蹤底層流的原理,再回到用戶態(tài)中流的使用。底層流我們知道中的函數(shù)可以打開本地文件等并返回一個(gè)句柄,函數(shù)能對(duì)資源句柄進(jìn)行讀寫,用于關(guān)閉資源。更多關(guān)于底層流的操作可參考官方文檔中開發(fā)者的流章節(jié),本文不再深入。 轉(zhuǎn)載請(qǐng)注明文章出處: https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎(chǔ) web請(qǐng)求 cookie web響應(yīng) sessi...

    gself 評(píng)論0 收藏0
  • Node_模塊

    摘要:當(dāng)某個(gè)執(zhí)行完畢時(shí),將以時(shí)間的形式通知執(zhí)行操作的線程,線程執(zhí)行了這個(gè)事件的回調(diào)函數(shù)。為了處理異步,線程必須有事件循環(huán),不斷的檢查是否有未處理的時(shí)間。這種處理機(jī)制,稱為事件環(huán)機(jī)制。方面使用第三方模塊。 簡(jiǎn)介 V8引擎本身就是用于Chrome瀏覽器的JS解釋部分,但是Ryan Dahl,把V8搬到服務(wù)器,用于做服務(wù)器的軟件。Node是一個(gè)專注于實(shí)現(xiàn)高性能Web服務(wù)器優(yōu)化的專家,在遇到V8而誕...

    zero 評(píng)論0 收藏0
  • Java8-

    摘要:因此,使用并行流需要考慮以下幾點(diǎn)數(shù)據(jù)量將問(wèn)題分解之后并行化處理,再將結(jié)果合并會(huì)帶來(lái)額外的開銷。 目錄 簡(jiǎn)介 用法 例子 注意點(diǎn) 一. 簡(jiǎn)介 流是Java8引入的一個(gè)新特性,提供了對(duì)集合元素一系列便捷的操作,可以用很少的代碼實(shí)現(xiàn)復(fù)雜的功能。流有兩大類,分別是對(duì)象流(Stream),基本數(shù)據(jù)流(IntStream、LongStream、DoubleStream)。 二.用法 流的使用通...

    whinc 評(píng)論0 收藏0
  • PHP 網(wǎng)絡(luò)編程小白系列 —— Socket 編程入門

    摘要:在這個(gè)時(shí)刻,服務(wù)程序被驚醒并且為客戶提供服務(wù)對(duì)客戶的請(qǐng)求作出適當(dāng)?shù)姆磻?yīng)。為了方便這種模型的網(wǎng)絡(luò)編程,年代初,由聯(lián)合了其他幾家公司共同制定了一套下的網(wǎng)絡(luò)編程接口,即規(guī)范,它不是一種網(wǎng)絡(luò)協(xié)議而是一套開放的支持多種協(xié)議的下的網(wǎng)絡(luò)編程接口。 這篇文章將會(huì)介紹一下 Socket 編程中相關(guān)的 PHP 函數(shù),并簡(jiǎn)單實(shí)現(xiàn)一個(gè) C/S 的交互 Socket 簡(jiǎn)介 Socket 的官方解釋:在網(wǎng)絡(luò)編程中...

    DevWiki 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<