2015-07-04 53 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"; 
}