Как заставить php обрабатывать загрузку файлов с неполным файлом? - PullRequest
0 голосов
/ 24 июня 2010

Так, например, у меня есть файл, загружаемый через FTP и изменения размера файла. Я знаю размер файла заранее. Итак, как мне заставить php отправлять его в браузеры клиентов, даже если файл не завершил загрузку и ждет, пока размер файла не совпадет, прежде чем он закончит буферизацию. Код ниже не обновит дескриптор и не увидит изменения, внесенные в файл. Я мог бы пройти fopen каждый раз, но, может быть, есть правильный путь? Спасибо

$buffer = '';
$cnt =0;
$handle = fopen($filename, 'rb');
if ($handle === false) {
  return false;
}
while ($cnt < $totalSize) {
  $buffer = fread($handle, 2048);
  echo $buffer;
  ob_flush();
  flush();
  $bufferLen = strlen($buffer);
  $cnt += $bufferLen;
  if(!$bufferLen) sleep(1);
}
fclose($handle);

1 Ответ

0 голосов
/ 24 июня 2010

Поможет ли вам закрыть и снова открыть файл?Затем вы можете перейти туда, где остановились, и продолжить выдвигать остальную часть файла.

Попробуйте добавить что-то подобное после cnt + = $ bufferLen;

if(feof($handle) && ($cnt < $totalSize)) {
  fclose($handle);
  sleep(1);
  $handle = fopen($filename, 'rb');
  fseek($handle, $cnt);
}

Удалите1006 * заявление.

...