2015-07-04 56 views
0

尝试使用PHP SDK v2(PHP 5.5不可用)将7G文件上载到S3。小于5G的文件上传效果很好,但分段上传从未奏效。在上传完成之前,它们总是以无任何信息或错误结束。PHP到AWS S3分段上传总是失败

我有完整的S3访问权限。已经尝试了一堆不同的东西无济于事。

代码是没有什么特别的:

$uploader = UploadBuilder::newInstance() 
    ->setBucket($bucket_nm) 
    ->setKey($key) 
    ->setMinPartSize(100 * 1024 * 1024) 
    ->setConcurrency(1) 
    ->setSource($src_path) 
    ->setClient($s3) 
    ->build(); 
try { 
    $uploader->getEventDispatcher()->addListener(
     'multipart_upload.after_part_upload', 
     function($event) { 
      $msg = $event['state']->count() . ' parts uploaded.'; 
      echo "$msg<br />"; 
      WriteToLog($msg); 
     } 
    ); 
    $uploader->upload(); 
    $msg = 'Upload complete.'; 
} catch (MultipartUploadException $e) { 
    $uploader->abort(); 
    $msg = 'Upload failed. ' . $e->getMessage() . '.'; 
} 
echo "$msg<br />"; 
WriteToLog($msg); 
+0

执行总是失败默默,绕过'register_shutdown_function'的抓。 似乎是cURL multi的一个问题。通常,执行在上传最后一组部件之前结束。 – beej

回答

0

您需要将应用这些尝试取代你的中止或上传过程

// Perform the upload. Abort the upload if something goes wrong 
try { 
$uploader->upload(); 
echo "Upload complete.\n"; 
} catch (MultipartUploadException $e) { 
$uploader->abort(); 
echo "Upload failed.\n"; 
}