PHP-Base64对大文件进行编码并同步回写


PHP - Base64 Encode big files and write back synchronously

我需要用PHP对大文件进行base64编码
file()file_get_contents()是选项,因为它们将整个文件加载到内存中
我有了使用这个的想法:

$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
    while (($buffer = fgets($handle, 4096)) !== false) {
        echo $buffer;
    }
    fclose($handle);
}

SOURCE:读取并解析超大文件的内容

这对阅读很有效,但有可能这样做吗:
读取行->base64编码->写回文件
然后对文件中的每一行重复
如果它可以直接执行,而不需要写入临时文件,那就太好了。

Base64在7位安全文本上将3个字节的原始数据编码为4个字节。如果给它提供小于3个字节的填充,将发生这种情况,并且不能在字符串的中间发生这种情况。然而,只要你的交易是3的倍数,你就是黄金,sooo:

$base_unit = 4096;
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
    while (($buffer = fread($handle, $base_unit*3)) !== false) {
        echo base64_encode($buffer);
    }
    fclose($handle);
}

http://en.wikipedia.org/wiki/Base64#Examples