流是通用化文件、网络、数据压缩和其他共享一组通用功能和用途的操作的方式。在最简单的定义中,流是表现出可流式传输行为的资源对象。也就是说,它可以以线性方式读取或写入,并且可以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_filter | php_user_filter 类。 |
方法 | 说明 |
filter() | 应用过滤器时调用。 |
onClose() | 关闭过滤器时调用。 |
onCreate() | 创建过滤器时调用。 |
PHP StreamWrapper类
类描述 | |
---|---|
streamWrapper | streamWrapper 类。 |
方法 | 描述 |
__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 流函数
PHP Streams 预定义常量
以下常量是由此扩展定义的,并且只会当扩展已编译为 PHP 或在运行时动态加载时可用。
常量 | 描述 |
---|---|
STREAM_FILTER_READ | 与stream_filter_append()和stream_filter_prepend() 一起使用表示仅在读取时应用指定的过滤器 |
STREAM_FILTER_WRITE | 与stream_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_INET | Internet 协议版本 4 (IPv4 )。与 stream_socket_pair() 函数一起使用。 |
STREAM_PF_INET6 | 互联网协议版本 6 (IPv6 )。与stream_socket_pair()函数一起使用。 |
STREAM_PF_UNIX | Unix系统内部协议。与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_RD | 与stream_socket_shutdown()一起使用以禁用进一步的接收。 |
STREAM_SHUT_WR | 与stream_socket_shutdown()一起使用以禁用进一步传输。 |
STREAM_SHUT_RDWR | 与 stream_socket_shutdown() 一起使用以禁用进一步的接收和传输。 |
STREAM_CAST_FOR_SELECT | 流式投射,当 stream_select() 调用 stream_cast() 时. |
STREAM_CAST_AS_STREAM | 流式投射,当 stream_cast() 被调用时(参见 |
STREAM_META_TOUCH | 与stream_metadata()一起使用,指定touch() 调用。 |
STREAM_META_OWNER | 与 stream_metadata()一起使用,指定 chown() 调用。 |
STREAM_META_OWNER_NAME | 与 stream_metadata() 一起使用,指定 chown() 调用。 |
STREAM_META_GROUP | 与stream_metadata()一起使用,指定chgrp() 调用。 |
STREAM_META_GROUP_NAME | 与 stream_metadata( )一起使用,指定 chgrp() 调用。 |
STREAM_META_ACCESS | 与 stream_metadata() 一起使用,指定 chmod() 调用。 |
STREAM_BUFFER_NONE | 无缓冲。 |
STREAM_BUFFER_LINE | 行缓冲。 |
STREAM_BUFFER_FULL | 完全缓冲。 |