3
$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 的文件后最终消耗了大约 200MB 的 RAM。

在没有 stream_filter 的情况下运行它,内存占用约为 10 MB。

是什么赋予了?

4

3 回答 3

1

您只需要注册自定义过滤器。iconv 是内置的。这不是特定的操作,使用 rot13 的流过滤器表现出类似的行为。

于 2008-10-27T23:32:12.657 回答
0

从我在这里阅读的内容来看,您没有stream_filter_prepend()正确实施,尽管我可能对这个过程有误解。

另外,我不完全确定,但我敢打赌,这与 iconv 是一个昂贵的过程这一事实有关,而与您将其用作流过滤器这一事实关系不大。

祝你好运。

于 2008-10-27T23:22:21.850 回答
0

您想使用 stream_filter_prepend() 的任何特殊原因?如果它导致内存问题,那么我会找到另一种方法来完成它的工作。

于 2008-10-28T04:06:23.807 回答