我正在使用AWS PHP library
尝试使用getCommand
执行批量复制操作。为此,我使用他们提供的示例here。
然而,它似乎不起作用,更糟糕的是,它不会抛出任何异常。我正在使用其他AWS服务,如果出现错误,它们都会抛出异常。我想知道我在这里做错了什么,或者是否有办法捕捉到这些异常。
这是我的代码:
准备
for ($i = 1; $i <= 3; $i++) {
$batch[] = $s3->getCommand('CopyObject', array(
'Bucket' => $bucket,
'Key' => "{$i}-{$file}",
'CopySource' => "{$bucket}/{$file}"
));
}
执行
try {
// goes here
echo __line__;
$res =$s3->execute($batch);
// not here
echo __line__;
return true;
} catch (\Aws\Exception\AwsException $e) {
// not here
echo __line__;
$this->logger($e->getMessage());
return false;
}
为了捕获异常,我还尝试使用:\Guzzle\Service\Exception\CommandTransferException $e)
命名空间并且没有结果。
答案 0 :(得分:0)
所以最后我使用AWS库中的CommandPool::batch
函数解决了这个问题。
对于有相同问题的人来说,如何使用它:
<强>准备强>
for ($i = 1; $i <= 3; $i++) {
$batch[] = $s3->getCommand('CopyObject', array(
'Bucket' => $bucket,
'Key' => "{$i}-{$file}",
'CopySource' => "{$bucket}/{$file}"
));
}
<强>执行强>
$results = CommandPool::batch($s3, $batch);
P.S。别忘了包含CommandPool
命名空间:
use Aws\CommandPool;