流是通用化文件、网络、数据压缩和其他共享一组通用功能和用途的操作的方式。在最简单的定义中,流是表现出可流式传输行为的资源对象。也就是说,它可以以线性方式读取或写入,并且可以fseek()到流中的任意位置。

包装器是告诉流如何处理特定协议/编码的附加代码。例如,http 包装器知道如何将 URL 转换为对远程服务器上文件的 HTTP/1.0 请求。

流引用为:scheme://target

  • scheme(string) - 要使用的包装器的名称。示例包括:file、http、https、ftp、ftps、compress.zlib、compress.bz2 和 php。如果未指定包装器,则使用默认函数(通常为 file://)。
  • target - 取决于所使用的包装器。对于文件系统相关的流,这通常是所需文件的路径和文件名。对于网络相关的流,这通常是主机名,通常附加路径。

安装

无需安装即可使用这些功能。这些函数是 PHP 核心的一部分。

运行时配置

此扩展没有在 php.ini 中定义配置指令。

PHP php_user_filter 类

类描述
php_user_filterphp_user_filter 类。
方法说明
filter()应用过滤器时调用。
onClose()关闭过滤器时调用。
onCreate()创建过滤器时调用。

PHP StreamWrapper类

类描述
streamWrapperstreamWrapper 类。
方法描述
__construct()构造一个新的流包装器。
__destruct()销毁现有的流包装器。
dir_linedir()关闭目录句柄。
dir_opendir()打开目录句柄。
dir_readdir()从目录句柄读取条目。
dir_rewinddir()倒回目录句柄。
rename()重命名文件或目录。
mkdir()创建目录。
rmdir()删除目录。
stream_cast()检索底层资源。
stream_close()关闭资源。
stream_eof()测试文件指针上的文件结尾。
stream_flush()刷新输出。
stream_lock()建议文件锁定。
stream_metadata()更改流元数据。
stream_open()打开文件或 URL .
stream_read()从流中读取。
stream_seek()搜索流中的特定位置。
stream_set_option()更改流选项。
stream_stat()检索有关文件资源的信息。
stream_tell()检索流的当前位置。
stream_truncate()截断流。
stream_write()写入流。
unlink()删除文件。
url_stat()检索有关文件的信息。

PHP 流函数

函数描述
stream_bucket_append()将存储桶附加到队列。
stream_bucket_make_writeable()从brigade返回一个bucket对象进行操作。
stream_bucket_new()创建一个用于当前流的新存储桶。
stream_bucket_prepend()将存储桶添加到队列中。
stream_context_create()创建流上下文。
stream_context_get_default()检索默认流上下文。
stream_context_get_options()检索流/包装器/上下文的选项。
stream_context_get_params()从上下文中检索参数。
stream_context_set_default( )设置默认流上下文。
stream_context_set_option() 为流/包装器/上下文设置选项。
stream_context_set_params() 设置流/包装器/上下文的参数。
stream_copy_to_stream()将数据从一个流复制到另一个流。
stream_filter_append()将过滤器附加到流。
stream_filter_prepend()附加流的过滤器。
stream_filter_register()注册用户定义的流
stream_filter_remove()从流中删除过滤器。
从流中删除过滤器。
stream_get_contents()将流的剩余部分读取到字符串中。
stream_get_filters()检索已注册过滤器的列表。
stream_get_line()从流资源中获取到给定分隔符的行。
stream_get_meta_data()从流/文件指针中检索标头/元数据。
stream_get_transports()检索已注册的套接字传输列表。
stream_get_wrappers()检索已注册流的列表。
stream_is_local()检查流是否为本地流。
stream_isatty()检查流是否为 TTY。
stream_notification_callback()通知上下文参数的回调函数。
Stream_register_wrapper()注册作为 PHP 类实现的 URL 包装器。stream_wrapper_register() 函数的别名。
stream_resolve_include_path() 根据包含路径解析文件名。
stream_select() 对给定的流数组运行相当于 select() 系统调用,超时时间由 tv_sec 和 tv_usec 指定。
stream_set_blocking()设置流上的阻塞/非阻塞模式。
stream_set_chunk_size()设置流块大小。
stream_set_read_buffer()在给定流上设置读取文件缓冲。
stream_set_timeout()设置流的超时时间。
stream_set_write_buffer()在给定流上设置写入文件缓冲。
stream_socket_accept()接受由stream_socket_server创建的套接字上的连接。
stream_socket_client() 打开互联网或Unix域套接字连接。
stream_socket_enable_crypto()在已连接的套接字上打开/关闭加密。
stream_socket_get_name()检索本地或远程套接字的名称。
stream_socket_pair()创建一对连接的、无法区分的套接字流。
stream_socket_recvfrom()从套接字接收数据,无论是否连接。
stream_socket_sendto()向套接字发送消息,无论其是否已连接。
stream_socket_server()创建 Internet 或 Unix 域服务器套接字。
stream_socket_shutdown()关闭全双工连接。
stream_supports_lock()告诉是否流支持锁定。
stream_wrapper_register()注册一个实现为的 URL 包装器一个 PHP 类。
stream_wrapper_restore()恢复以前未注册的内置函数
stream_wrapper_unregister()取消注册 URL 包装器。

PHP Streams 预定义常量

以下常量是由此扩展定义的,并且只会当扩展已编译为 PHP 或在运行时动态加载时可用。

常量描述
STREAM_FILTER_READstream_filter_append()stream_filter_prepend() 一起使用表示仅在读取时应用指定的过滤器
STREAM_FILTER_WRITEstream_filter_append()stream_filter_prepend() 一起使用指示仅在写入时应用指定的过滤器
STREAM_FILTER_ALL此常量相当于 STREAM_FILTER_READ | STREAM_FILTER_WRITE
PSFS_PASS_ON返回代码,指示用户空间过滤器在 $out 中返回存储桶。
PSFS_FEED_ME返回代码,指示用户空间过滤器未返回 $out 中的存储桶(即没有可用数据)。
PSFS_ERR_FATAL返回代码表明用户空间过滤器遇到不可恢复的错误(即收到无效数据)。
PSFS_FLAG_NORMAL常规读/写。
PSFS_FLAG_FLUSH_INC增量刷新。
PSFS_FLAG_FLUSH_CLOSE关闭之前的最终刷新。
STREAM_USE_PATH指示流是否使用包含路径的标志。
STREAM_REPORT_ERRORS标志,指示包装器是否负责在打开流期间使用 trigger_error() 引发错误。如果未设置此标志,则不应引发任何错误。
STREAM_CLIENT_ASYNC_CONNECT异步打开客户端套接字。此选项必须与 STREAM_CLIENT_CONNECT 标志一起使用。与 stream_socket_client() 一起使用。
STREAM_CLIENT_CONNECT打开客户端套接字连接。客户端套接字应始终包含此标志。与 stream_socket_client() 一起使用。
STREAM_CLIENT_PERSISTENT使用 stream_socket_client() 应在页面加载之间保持持久性。
STREAM_SERVER_BIND告诉使用 stream_socket_server() 创建的流绑定到指定的目标。服务器套接字应始终包含此标志。
STREAM_SERVER_LISTEN告诉使用stream_socket_server() 创建的流并使用 STREAM_SERVER_BIND 标志进行绑定以开始侦听套接字。面向连接的传输(例如 TCP)必须使用此标志,否则服务器套接字将不会启用。使用此标志进行无连接传输(例如 UDP)是错误的。
STREAM_NOTIFY_RESOLVE此流所需的远程地址已解析,或者解析失败。查看严重性以了解所发生事件的指示。
STREAM_NOTIFY_CONNECT已建立与外部资源的连接。
STREAM_NOTIFY_AUTH_REQUIRED需要额外授权才能访问指定资源。典型问题,严重级别为 STREAM_NOTIFY_SEVERITY_ERR。
STREAM_NOTIFY_MIME_TYPE_IS已识别资源的 mime 类型,请参阅消息以获取已发现类型的描述.
STREAM_NOTIFY_FILE_SIZE_IS已发现资源的大小。
STREAM_NOTIFY_REDIRECTED外部资源已将流重定向到备用位置。请参阅消息。
STREAM_NOTIFY_PROGRESS以 bytes_transferred 和可能的 bytes_max 形式指示流传输的当前进度。
STREAM_NOTIFY_COMPLETED流中没有更多可用数据。
STREAM_NOTIFY_FAILURE发生一般错误流,请查阅 message 和 message_code 了解详细信息。
STREAM_NOTIFY_AUTH_RESULT授权已完成(成功或失败)。
STREAM_NOTIFY_SEVERITY_INFO正常、与错误无关的通知。
STREAM_NOTIFY_SEVERITY_WARN非严重错误情况。处理可能会继续。
STREAM_NOTIFY_SEVERITY_ERR发生严重错误。处理无法继续。
STREAM_IPPROTO_ICMP提供 ICMP 套接字。与stream_socket_pair()函数一起使用。
STREAM_IPPROTO_IP提供IP套接字。与 stream_socket_pair() 函数一起使用。
STREAM_IPPROTO_RAW提供 RAW 套接字。与 stream_socket_pair() 函数一起使用。
STREAM_IPPROTO_TCP提供 TCP 套接字。与 stream_socket_pair() 函数一起使用。
STREAM_IPPROTO_UDP提供 UDP 套接字。与 stream_socket_pair() 函数一起使用。
STREAM_PF_INETInternet 协议版本 4 (IPv4 )。与 stream_socket_pair() 函数一起使用。
STREAM_PF_INET6互联网协议版本 6 (IPv6 )。与stream_socket_pair()函数一起使用。
STREAM_PF_UNIXUnix系统内部协议。与stream_socket_pair()函数一起使用。
STREAM_SOCK_DGRAM提供数据报,即连接-less 消息(例如 UDP)。与 stream_socket_pair() 函数一起使用。
STREAM_SOCK_RAW提供原始套接字,该套接字提供对内部网络协议和接口的访问。通常这种类型的套接字仅供 root 用户使用。与 stream_socket_pair() 函数一起使用。
STREAM_SOCK_RDM提供 RDM(可靠地-已传递消息)套接字。与 stream_socket_pair() 函数一起使用。
STREAM_SOCK_SEQPACKET提供排序的数据包流套接字。与 stream_socket_pair() 函数一起使用。
STREAM_SOCK_STREAM提供顺序、双向具有带外数据传输机制(例如 TCP)的字节流。与 stream_socket_pair() 函数一起使用。
STREAM_SHUT_RDstream_socket_shutdown()一起使用以禁用进一步的接收。
STREAM_SHUT_WRstream_socket_shutdown()一起使用以禁用进一步传输。
STREAM_SHUT_RDWRstream_socket_shutdown() 一起使用以禁用进一步的接收和传输。
STREAM_CAST_FOR_SELECT流式投射,当 stream_select() 调用 stream_cast() 时.
STREAM_CAST_AS_STREAM流式投射,当 stream_cast() 被调用时(参见
STREAM_META_TOUCHstream_metadata()一起使用,指定touch() 调用。
STREAM_META_OWNERstream_metadata()一起使用,指定 chown() 调用。
STREAM_META_OWNER_NAMEstream_metadata() 一起使用,指定 chown() 调用。
STREAM_META_GROUPstream_metadata()一起使用,指定chgrp() 调用。
STREAM_META_GROUP_NAMEstream_metadata( )一起使用,指定 chgrp() 调用。
STREAM_META_ACCESSstream_metadata() 一起使用,指定 chmod() 调用。
STREAM_BUFFER_NONE无缓冲。
STREAM_BUFFER_LINE行缓冲。
STREAM_BUFFER_FULL完全缓冲。