stream_filter_append() - php 流数据函数stream
stream_filter_append()
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
Attach a filter to a stream
说明
stream_filter_append(resource $stream,string $filtername[,int $read_write[,mixed $params]]): resourceAdds$filternameto the list of filters attached to$stream.
参数
$streamThe target stream.
$filternameThe filter name.
$read_writeBy default,stream_filter_append()will attach the filter to theread filter chainif the file was opened for reading (i.e. File Mode:r, and/or+). The filter will also be attached to thewrite filter chainif the file was opened for writing (i.e. File Mode:w,a, and/or+).STREAM_FILTER_READ
,STREAM_FILTER_WRITE
, and/orSTREAM_FILTER_ALL
can also be passed to the$read_writeparameter to override this behavior.
This filter will be added with the specified$paramsto theendof the list and will therefore be called last during stream operations. To add a filter to the beginning of the list,usestream_filter_prepend().
返回值
Returns a resource on success orFALSE
on failure. The resource can be used to refer to this filter instance during a call tostream_filter_remove().
FALSE
is returned if$streamis not a resource or if$filternamecannot be located.
更新日志
版本 | 说明 |
---|---|
5.1.0 | Prior to PHP 5.1.0, this function returnsTRUE on success 或者在失败时返回FALSE . |
范例
Controlling where filters are applied
注释
Note:When using custom (user) filters
stream_filter_register()must be called first in order to register the desired user filter to$filtername.
Note:Stream data is read from resources (both local and remote) in chunks, with any unconsumed data kept in internal buffers. When a new filter is appended to a stream, data in the internal buffers is processed through the new filter at that time. This differs from the behavior ofstream_filter_prepend().
Note:When a filter is added for read and write, two instances of the filter are created.stream_filter_append()must be called twice withSTREAM_FILTER_READ
andSTREAM_FILTER_WRITE
to get both filter resources.
参见
stream_filter_register()
Register a user defined stream filterstream_filter_prepend()
Attach a filter to a streamstream_get_filters()
获取已注册的数据流过滤器列表
Note that stream filters applied to STDOUT are not called when outputting via echo or print. This is easily demonstrated with the standard ROT13 filter: If you want to filter STDOUT, you may have better luck with an output buffering callback added via ob_start: http://php.net/manual/en/function.ob-start.php At the time of this writing, there is an open PHP feature request to support echo and print for stream filters: https://bugs.php.net/bug.php?id=30583
While using compression filters on a large set of files during one script invocation i've got Fatal error: Allowed memory size of xxx bytes exhausted even when my max memory limit settings was insane high (128MB) Workaround is to remember to remove filter after work done with stream_filter_remove:
Hello firends The difference betweem adding a stream filter first or last in the filte list in only the order they will be applied to streams. For example, if you're reading data from a file, and a given filter is placed in first place with stream_filter_prepend()the data will be processed by that filter first. This example reads out file data and the filter is applied at the beginning of the reading operation: On the other hand, if stream_filter_append() is used, then the filter will be applied at the end of the data operation. The thing about this is only the order filters are applied to streams. Back to the example, it's not the same thing removing new lines from file data and then counting the number of characters, than performing the inverse process. In this case, the order that filters are applied to stream is important. This example writes a test string to a file. The filter is applied at the end of the writing operation: In the first case, data is transformed at the end of the writing operation, while in the second one, data is first filtered and then stored in $contents. With Regards Hossein
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!