Ловля ошибок при загрузке массивных файлов через PHP - PullRequest
0 голосов
/ 27 сентября 2010

Я пытаюсь загрузить довольно большие файлы (до, возможно, более 1 ГБ) с удаленного HTTP-сервера через скрипт PHP.Я использую fgets (), чтобы построчно читать удаленный файл и записывать содержимое файла в локальный файл, созданный с помощью tempnam ().Однако загрузка очень больших файлов (несколько сотен МБ) не удалась.Можно ли каким-либо образом переработать скрипт, чтобы отследить возникающие ошибки?

Поскольку загрузка является лишь частью более крупного общего процесса, я хотел бы иметь возможность обрабатывать загрузки и устранять ошибкисценарий PHP вместо того, чтобы переходить на wget или какой-либо другой процесс.

Это сценарий, который я использую сейчас:

$tempfile = fopen($inFilename, 'w');
$handle = @fopen("https://" . $server . ".domain.com/file/path.pl?keyID=" . $keyID . "&format=" . $format . "&zipped=true", "r");
$firstline = '';
if ($handle) {
 while (!feof($handle)) {
  $buffer = fgets($handle, 4096);
  if ($firstline == '') $firstline = $buffer;
  fwrite($tempfile, $buffer);
 }
 fclose($handle);
 fclose($tempfile);
 return $firstline;
} else {
 throw new Exception ('Unable to open remote file.');
}

1 Ответ

3 голосов
/ 27 сентября 2010

Я бы сказал, что вы ищете stream_notification_callback (особенно константы STREAM_NOTIFY_FAILURE & STREAM_NOTIFY_COMPLETED)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...