我需要转换文本文件的字符编码而不占用服务器的内存,而输入文件是用户配置的,其大小不受限制。PHP使用iconv转换大文件
使用exec()(我宁愿避免,尽管我已经在应用程序中使用它来执行其他文件操作)来包装unix的iconv命令会更高效,还是应该逐行读取文件并将其输出到另一个文件?
我想以这种方式工作:
$in = fopen("in.txt", "r");
$out = fopen("out.txt", "w+");
while(($line = fgets($in, 4096)) !== false) {
$converted = iconv($charset["in"], $charset["out"], $line);
fwrite($out, $converted);
}
rename("out.txt", "in.txt");
有没有更好的办法将文件快速和有效地转换?我认为这可能是CPU密集型的,但是我相信iconv本身是一项昂贵的任务,所以我不确定我是否可以使它实际上不会吃太多的服务器。
谢谢!
为什么你不尝试两种方式,并比较速度和内存负载? –
现在只是在玩它,虽然我的测试数据并不能很好地代表产品的性能,因为这些数据的大小和形式在请求之间会有所不同,所以我想知道是否有关于如何处理这些数据的一般想法。 – kachnitel