Stream 流处理

属性
命名空间 fize\io
类名 Stream
方法:
方法名 说明
__construct() 初始化
__destruct() 析构
get() 取回上下文资源流
bucketAppend() 将桶附加到队列
bucketMakeWriteable() 从队列中返回一个bucket对象,用于操作
bucketNew() 创建一个用于当前流的新桶
bucketPrepend() 为队列准备桶
contextCreate() 创建资源流上下文
contextGetDefault() 检索默认流上下文
contextGetOptions() 获取资源流/数据包/上下文的参数
contextGetParams() 从上下文检索参数
contextSetDefault() 设置默认流上下文
contextSetOption() 对资源流、数据包或者上下文设置参数
contextSetParams() 设置流/包装器/上下文的参数
copyToStream() 将数据复制到另一个流
filterAppend() 将后置过滤器附加到流
filterPrepend() 将前置过滤器附加到流
filterRegister() 注册用户定义的流过滤器
filterRemove() 从资源流里移除某个过滤器
getContents() 读取资源流到一个字符串
getFilters() 获取已注册的数据流过滤器列表
getLine() 从资源流里读取一行直到给定的定界符
getMetaData() 从封装协议文件指针中取得报头/元数据
getTransports() 获取已注册的套接字传输协议列表
getWrappers() 获取已注册的流类型
isLocal() 检查流是否是本地流
isatty() 确定流是否引用有效的终端类型设备
resolveIncludePath() 根据包含路径解析文件名
select() 对流的给定数组运行select()系统调用,超时由tv_sec和tv_usec指定
setBlocking() 为资源流设置阻塞或者非阻塞模式
setChunkSize() 设置资源流区块大小
setReadBuffer() 设置流上的读取文件缓冲
setTimeout() 设置流超时时间
setWriteBuffer() 设置流上的写文件缓冲
socketAccept() 接受由 Stream::socketServer() 创建的套接字连接
socketClient() 打开Internet或Unix域套接字连接
socketEnableCrypto() 在已连接的套接字上打开/关闭加密
socketGetName() 获取本地或者远程的套接字名称
socketPair() 创建一对完全一样的网络套接字连接流
socketRecvfrom() 从套接字接收数据,无论是否连接
socketSendto() 向套接字发送消息,不管它是否连接
socketServer() 创建Internet或Unix域服务器套接字
socketShutdown() 关闭全双工连接
supportsLock() 表示流是否支持锁定
wrapperRegister() 注册一个用 PHP 类实现的 URL 封装协议
wrapperRestore() 恢复以前未注册的内置包装器
wrapperUnregister() 卸载封装协议

方法

__construct()

初始化

public function __construct (

    resource $stream_or_context

)
参数:
名称 说明
stream_or_context 资源流/数据包/上下文

__destruct()

析构

public function __destruct ()
清理资源对象,防止内存泄漏

get()

取回上下文资源流

public function get () : resource

bucketAppend()

将桶附加到队列

public static function bucketAppend (

    resource $brigade,

    object $bucket

)
参数:
名称 说明
brigade 队列
bucket

bucketMakeWriteable()

从队列中返回一个bucket对象,用于操作

public static function bucketMakeWriteable (

    resource $brigade

) : object
参数:
名称 说明
brigade 队列

bucketNew()

创建一个用于当前流的新桶

public static function bucketNew (

    resource $stream,

    string $buffer

) : object
参数:
名称 说明
stream
buffer 缓存区

bucketPrepend()

为队列准备桶

public static function bucketPrepend (

    resource $brigade,

    resource $bucket

)
参数:
名称 说明
brigade 队列
bucket

contextCreate()

创建资源流上下文

public static function contextCreate (

    array $options = null,

    array $params = null

) : resource
参数:
名称 说明
options 选项,必须是一个二维关联数组。
params 参数
参数 `$options` :
  格式如下:$arr['wrapper']['option'] = $value 
参数 `$params` :
  必须是 $arr['parameter'] = $value 格式的关联数组。
  请参考 context parameters 里的标准资源流参数列表。

contextGetDefault()

检索默认流上下文

public static function contextGetDefault (

    array $options = []

) : resource
参数:
名称 说明
options 选项

contextGetOptions()

获取资源流/数据包/上下文的参数

public function contextGetOptions () : array
返回值:返回一个包含有原参数的关联数组。

contextGetParams()

从上下文检索参数

public function contextGetParams () : array
返回值:参数

contextSetDefault()

设置默认流上下文

public static function contextSetDefault (

    array $options

) : resource
参数:
名称 说明
options 选项
返回值:

返回默认流

contextSetOption()

对资源流、数据包或者上下文设置参数

public function contextSetOption (

    array $options

) : bool
参数:
名称 说明
options 选项

contextSetParams()

设置流/包装器/上下文的参数

public function contextSetParams (

    array $params

) : bool
参数:
名称 说明
params 参数

copyToStream()

将数据复制到另一个流

public function copyToStream (

    resource $dest,

    int $maxlength = -1,

    int $offset = 0

) : int
参数:
名称 说明
dest 目标流
maxlength 最大长度
offset 偏移量
返回值:

失败时返回false

filterAppend()

将后置过滤器附加到流

public function filterAppend (

    string $filtername,

    int $read_write = null,

    mixed $params = null

) : resource
参数:
名称 说明
filtername 过滤器
read_write 读写模式
params 相关参数
参数 `$read_write` :
可选值:STREAM_FILTER_READ、STREAM_FILTER_WRITE和/或STREAM_FILTER_ALL

filterPrepend()

将前置过滤器附加到流

public function filterPrepend (

    string $filtername,

    int $read_write = null,

    mixed $params = null

) : resource
参数:
名称 说明
filtername 过滤器
read_write 读写模式
params 相关参数
参数 `$read_write` :
可选值:STREAM_FILTER_READ、STREAM_FILTER_WRITE和/或STREAM_FILTER_ALL

filterRegister()

注册用户定义的流过滤器

public static function filterRegister (

    string $filtername,

    string $classname

) : bool
参数:
名称 说明
filtername 过滤器名称
classname 类全限定名

filterRemove()

从资源流里移除某个过滤器

public static function filterRemove (

    resource $stream_filter

) : bool
参数:
名称 说明
stream_filter 需要被移除的资源流过滤器

getContents()

读取资源流到一个字符串

public function getContents (

    int $maxlength = -1,

    int $offset = -1

) : string
参数:
名称 说明
maxlength 需要读取的最大的字节数
offset 在读取数据之前先查找指定的偏移量
返回值:

失败时返回false

参数 `$maxlength` :
  默认是-1(读取全部的缓冲数据)。
参数 `$offset` :
  如果这个数字是负数,就不进行查找,直接从当前位置开始读取。

getFilters()

获取已注册的数据流过滤器列表

public static function getFilters () : array

getLine()

从资源流里读取一行直到给定的定界符

public function getLine (

    int $length,

    string $ending = null

) : string
参数:
名称 说明
length 需要从句柄里读取的字节数。
ending 可选参数,字符串定界符。
返回值:

如果发生错误,则返回 FALSE.

getMetaData()

从封装协议文件指针中取得报头/元数据

public function getMetaData () : array

getTransports()

获取已注册的套接字传输协议列表

public static function getTransports () : array

getWrappers()

获取已注册的流类型

public static function getWrappers () : array

isLocal()

检查流是否是本地流

public function isLocal (

    mixed $stream_or_url = null

) : bool
参数:
名称 说明
stream_or_url 可以指定流或者URL

isatty()

确定流是否引用有效的终端类型设备

public function isatty () : bool

resolveIncludePath()

根据包含路径解析文件名

public static function resolveIncludePath (

    string $filename

) : string
参数:
名称 说明
filename 包含路径
返回值:

失败时返回false

select()

对流的给定数组运行select()系统调用,超时由tv_sec和tv_usec指定

public static function select (

    array &$read,

    array &$write,

    array &$except,

    int $tv_sec,

    int $tv_usec = null

) : int
参数:
名称 说明
read 流组成的数组,以查看是否有字符可读
write 流组成的数组,以查看是否有字符可写
except 流组成的数组,以查看是否可导出
tv_sec 指定秒数
tv_usec 指定微秒数

setBlocking()

为资源流设置阻塞或者非阻塞模式

public function setBlocking (

    int $mode

) : bool
参数:
名称 说明
mode 模式

setChunkSize()

设置资源流区块大小

public function setChunkSize (

    int $chunk_size

) : int
参数:
名称 说明
chunk_size 想设置的新的区块大小。
返回值:

失败时返回false

setReadBuffer()

设置流上的读取文件缓冲

public function setReadBuffer (

    int $buffer

) : int
参数:
名称 说明
buffer 缓冲大小

setTimeout()

设置流超时时间

public function setTimeout (

    int $seconds,

    int $microseconds = null

) : bool
参数:
名称 说明
seconds 指定秒
microseconds 指定毫秒

setWriteBuffer()

设置流上的写文件缓冲

public function setWriteBuffer (

    int $buffer

) : int
参数:
名称 说明
buffer 缓冲大小

socketAccept()

接受由 Stream::socketServer() 创建的套接字连接

public function socketAccept (

    float $timeout = null,

    string &$peername = null

) : resource
参数:
名称 说明
timeout 覆盖默认的套接字接受的超时时限
peername 设置给连接中的客户端主机的名称(地址)
返回值:

失败时返回false

参数 `$timeout` :
  输入的时间需以秒为单位。
参数 `$peername` :
  如果包含该参数并且是可以从选中的传输数据中获取到,则将被设置给连接中的客户端主机的名称(地址)

socketClient()

打开Internet或Unix域套接字连接

public static function socketClient (

    string $remote_socket,

    int &$errno = null,

    string &$errstr = null,

    float $timeout = null,

    int $flags = 4,

    resource $context = null

) : resource
参数:
名称 说明
remote_socket 要连接到的套接字的地址。
errno 错误码
errstr 错误信息
timeout 超时时限。输入的时间需以秒为单位。
flags 标识
context 使用stream_context_create()创建的有效上下文资源。
返回值:

失败时返回false

参数 `$flags` :
选择仅限于STREAM_CLIENT_CONNECT(默认)、STREAM_CLIENT_ASYNC_CONNECT和STREAM_CLIENT_PERSISTENT。

socketEnableCrypto()

在已连接的套接字上打开/关闭加密

public function socketEnableCrypto (

    bool $enable,

    int $crypto_type = null,

    resource $session_stream = null

) : mixed
参数:
名称 说明
enable 是否开启加密
crypto_type 可选的加密类型
session_stream 用来自session_stream的设置为流。
返回值:

成功true,失败false。没有足够数据时返回0

socketGetName()

获取本地或者远程的套接字名称

public function socketGetName (

    int $want_peer

) : string
参数:
名称 说明
want_peer 是否远程套接字
参数 `$want_peer` :
如果设置为 TRUE ,那么将返回 remote 套接字连接名称;如果设置为 FALSE 则返回 local 套接字连接名称。

socketPair()

创建一对完全一样的网络套接字连接流

public static function socketPair (

    int $domain,

    int $type,

    int $protocol

) : array
参数:
名称 说明
domain 使用的协议族
type 通信类型
protocol 使用的传输协议
返回值:

数组包括了两个socket资源,失败返回false

参数 `$domain` :
  可选值:STREAM_PF_INET, STREAM_PF_INET6 or STREAM_PF_UNIX
参数 `$type` :
  可选值:STREAM_SOCK_DGRAM, STREAM_SOCK_RAW, STREAM_SOCK_RDM, STREAM_SOCK_SEQPACKET or STREAM_SOCK_STREAM
参数 `$protocol` :
  可选值:STREAM_IPPROTO_ICMP, STREAM_IPPROTO_IP, STREAM_IPPROTO_RAW, STREAM_IPPROTO_TCP or STREAM_IPPROTO_UDP

socketRecvfrom()

从套接字接收数据,无论是否连接

public function socketRecvfrom (

    int $length,

    int $flags = 0,

    string &$address = null

) : string
参数:
名称 说明
length 长度
flags 标识
address 将使用远程套接字的地址填充。
返回值:

以字符串的形式返回读取的数据

socketSendto()

向套接字发送消息,不管它是否连接

public function socketSendto (

    string $data,

    int $flags = 0,

    string $address = null

) : int
参数:
名称 说明
data 消息
flags 标识
address 将使用远程套接字的地址填充。
返回值:

以整数形式返回结果代码。

socketServer()

创建Internet或Unix域服务器套接字

public static function socketServer (

    string $local_socket,

    int &$errno = null,

    string &$errstr = null,

    int $flags = 12,

    resource $context = null

) : resource
参数:
名称 说明
local_socket 套接字字符串
errno 错误码
errstr 错误描述
flags 标识
context 有效上下文资源。
返回值:

失败时返回false

参数 `$local_socket` :
创建的套接字类型由使用标准URL格式transport: transport://target指定的传输类型决定。

socketShutdown()

关闭全双工连接

public function socketShutdown (

    int $how

) : bool
参数:
名称 说明
how 定义如何处理
参数 `$stream` :
  (例如,用stream_socket_client()打开)
参数 `$how` :
  以下常量之一:STREAM_SHUT_RD(禁用进一步的接收)、STREAM_SHUT_WR(禁用进一步的传输)或STREAM_SHUT_RDWR(禁用进一步的接收和传输)

supportsLock()

表示流是否支持锁定

public function supportsLock () : bool

wrapperRegister()

注册一个用 PHP 类实现的 URL 封装协议

public static function wrapperRegister (

    string $protocol,

    string $classname,

    int $flags = 0

) : bool
参数:
名称 说明
protocol 待注册的封装的名字
classname 实现了protocol的类名
flags 标识
参数 `$flags` :
如果协议是URL协议,则应设置为STREAM_IS_URL。默认值是0,即本地流。

wrapperRestore()

恢复以前未注册的内置包装器

public static function wrapperRestore (

    string $protocol

) : bool
参数:
名称 说明
protocol 待恢复的封装的名字

wrapperUnregister()

卸载封装协议

public static function wrapperUnregister (

    string $protocol

) : bool
参数:
名称 说明
protocol 待卸载的封装的名字