Не может стремиться к байту - PullRequest
0 голосов
/ 20 февраля 2019

Я использую PHP SDK на EC2.Когда я хочу скачать большой файл с s3.Я использую этот код:

$clif = S3Client::factory(array(
'key'      => DIR_UEK,
'secret'   => DIR_UESK)); 

$clif->registerStreamWrapper();

$context = stream_context_create(array(
's3' => array(
    'seekable' => true
)));
$stream = fopen("s3://{$bucketname}/{$key}", 'r',false,$context);
fseek($stream,$byte_from);

, где $ byte_from определяется HTTPRANGE (это часть моего кода). Когда я проверяю error.log, я вижу эту ошибку:

Невозможно найтидо байта 320971748, когда буферный поток содержит только 0 байтов

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 24 февраля 2019

Когда открыт доступный для поиска поток, вы можете искать только на считанных байтах. 1

Вам нужно прочитать $bytes_from, прежде чем вы сможете его искать.

// Read $bytes_from bytes from stream
fread($stream,$byte_from);

fseek($stream,$byte_from);

// Read $next_chunk bytes after $bytes_from
fread($stream, $next_chunk);

Не забудьте иметь достаточно места на диске, поскольку для больших файлов размером более 2 МБ потоковые данные записываются на диск.

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