无法寻求字节

时间:2019-02-20 01:35:53

标签: php amazon-web-services amazon-s3 sdk

我在EC2上使用PHP SDK。当我想从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时,我可以看到此错误:

当缓冲流仅包含0个字节时,无法寻求字节320971748

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

打开可搜索流时,只能搜索读取的字节。 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);

请记住要在磁盘上有足够的存储空间,因为对于大于2MB的大文件,流式数据将写入磁盘。