Я должен написать большую строку 10MB в файл, и я использую эту строку для достижения этого:
fwrite($file, $content);
проблема в том, что не вся строка записывается в файл и ограничена определенным пределом.
а также FWRITE всегда возвращайся 7933594
,
Да, fwrite
Функция ограничена длиной, и для больших файлов вы можете разбить файл на более мелкие фрагменты, как показано ниже:
$file = fopen("file.json", "w");
$pieces = str_split($content, 1024 * 4);
foreach ($pieces as $piece) {
fwrite($file, $piece, strlen($piece));
}
fclose($file);
Альтернативный способ решения @Ayman Alkom.
function fwrite_stream($fp, $string) {
for ($written = 0; $written < strlen($string); $written += $fwrite) {
$fwrite = fwrite($fp, substr($string, $written));
if ($fwrite === false) {
return $written;
}
}
return $written;
}
Это должно улучшить производительность.
Но если вы используете этот код для копирования большого файла,
Команда Linux
"cat file1.txt file2.txt > file.txt"
Оконная команда
"copy file1.txt+file1.txt file.txt"
Это решение.