$fp_src=fopen('file','r');
$filter = stream_filter_prepend($fp_src, 'convert.iconv.ISO-8859-1/UTF-8');
while(fread($fp_src,4096)){
++$count;
if($count%1000==0) print ftell($fp_src)."\n";
}
当我运行此脚本时,脚本在完成35MB的文件后最终消耗了大约200 MB的RAM。
在没有stream_filter的情况下运行它,直接使用~10 MB的常量内存占用。
是什么给出了?
答案 0 :(得分:1)
您只需注册自定义过滤器。 iconv是内置的。这不是特定的操作,使用rot13的流过滤器表现出类似的行为。
答案 1 :(得分:0)
从我正在阅读的内容here,您没有正确实施stream_filter_prepend()
,尽管我可能会对此过程产生误解。
答案 2 :(得分:0)
您想使用stream_filter_prepend()的任何特殊原因?如果它导致内存问题,那么我会找到另一种方法来做它所做的事情。