$fp = fopen('file','r');
$num = 1;
while($s = fread($fp,200000000))
{
file_put_contents('file'+$num,$s);
$num++;
}
fclose($fp);
Это простейший код, жрущий много памяти (поскольку вычитывает в ОЗУ весь кусок в 200МБ). Можно оптимизировать, читая более мелкими кусочками. Кури маны по файловым операциям в пхп.
Алсо, можно юзать никсовую команду split через системный вызов. Так будет оптимальнее всего.
https://andreyex.ru/linux/komandy-linux-i-komandy-shell/9-poleznyh-primerov-komandy-split-v-linux
☘️ Green ☘️Гуру (2755)
4 года назад
Цель была разделить файл, размер которого не известен заранее, по вашему примеру это можно было сделать получше как:
<?php
$f_input = fopen("file.txt", "r");
$part_size = filesize("file.txt") / 2;
$part1 = fread($f_input, $part_size);
$part2 = fread($f_input,$part_size);
fclose($f_input);
$f_1 = fopen("part1.txt", "w");
$f_2 = fopen("part2.txt", "w");
fwrite($f_1, $part1);
fwrite($f_2, $part2);
fclose($f_1);
fclose($f_2);
?>
Не додумаюсь как правильно разбить файл, если я не знаю его размера.
Только на PHP.