Мне нужно, чтобы base64 кодировал большой файл с помощью PHP.
файл() а также file_get_contents () не являются опциями, поскольку они загружают весь файл в память.
У меня есть идея использовать это:
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
echo $buffer;
}
fclose($handle);
}
ИСТОЧНИК: Чтение и анализ содержимого очень большого файла
Это хорошо работает для чтения, но возможно ли сделать это так:
Читать строку -> Base64 кодировать -> записать обратно в файл
И затем повторите для каждой строки в файле.
Было бы хорошо, если бы он мог сделать это напрямую, без необходимости записи во временный файл.
Base64 кодирует 3 байта необработанных данных в 4 байта 7-битного безопасного текста. Если вы передадите его менее чем на 3 байта, произойдет заполнение, и вы не сможете, чтобы это произошло в середине строки. Тем не менее, пока вы имеете дело с коэффициентами, кратными 3, вы золотые, ооочень:
$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);
}
Других решений пока нет …