Правильное приложение fread ()? - PullRequest
0 голосов
/ 16 октября 2018

Скажем, я загружаю кусочный файл, и я должен перекомпоновать его.Я знаю общее количество фрагментов и данных за каждую итерацию.

Я создал код, подобный следующему:

for ($i = 1; $i <= $num_chunks; $i++) {

  $file = fopen($target_file.$i, 'rb');
  $buff = fread($file, 2097152);
  fclose($file);

  $final = fopen($target_file, 'ab');
  $write = fwrite($final, $buff);
  fclose($final);

  unlink($target_file.$i);
}

Очевидно, значение 2097152 не имеет значения, по крайней мере для меня.Я прочитал php документы, но не мог понять слишком много.Может ли кто-нибудь объяснить мне, как я должен выбрать этот второй параметр Fread?И как это работает?

1 Ответ

0 голосов
/ 16 октября 2018

Второй параметр - это объем данных для чтения, так как при чтении этого в одном блоке вы должны быть уверены, что этого достаточно для обработки любого фрагмента.Значение, которое вы установили, составляет 2 МБ, что может быть достаточно, но вы можете изменить код так, чтобы он читал его небольшими блоками и циклически до тех пор, пока ввод полностью не будет прочитан.

Я также изменил его наоткройте выходной файл один раз и просто напишите содержимое по ходу дела ...

$final = fopen($target_file, 'wb');   // Open for write and start from beginning of file
for ($i = 1; $i <= $num_chunks; $i++) {
  $file = fopen($target_file.$i, 'rb');
  while($buff = fread($file, 4096))  {
      fwrite($final, $buff);
  }
  fclose($file);

  unlink($target_file.$i);
}
fclose($final);
...