Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php AWS S3执行命令不';好像不行_Php_Amazon Web Services_Amazon S3 - Fatal编程技术网

Php AWS S3执行命令不';好像不行

Php AWS S3执行命令不';好像不行,php,amazon-web-services,amazon-s3,Php,Amazon Web Services,Amazon S3,我正在使用AWS PHP库尝试使用getCommand执行批复制操作。为此,我使用了他们提供的示例 然而,它似乎不起作用,更糟糕的是,它没有抛出任何异常。我正在使用其他AWS服务,它们都会在出错时抛出异常。我想知道我在这里是否做错了什么,或者是否有办法捕捉这些异常 这是我的密码: 准备 for ($i = 1; $i <= 3; $i++) { $batch[] = $s3->getCommand('CopyObject', array( 'Bucket'

我正在使用AWS PHP库
尝试使用
getCommand
执行批复制操作。为此,我使用了他们提供的示例

然而,它似乎不起作用,更糟糕的是,它没有抛出任何异常。我正在使用其他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;
}
for ($i = 1; $i <= 3; $i++) {
    $batch[] = $s3->getCommand('CopyObject', array(
        'Bucket'             => $bucket,
        'Key'                => "{$i}-{$file}",
        'CopySource'         => "{$bucket}/{$file}"
    ));
}
$results = CommandPool::batch($s3, $batch);

为了捕获异常,我还尝试了:
\Guzzle\Service\exception\CommandTransferException$e)
名称空间,但没有得到任何结果。

因此,最后我使用AWS库中的
CommandPool::batch
函数解决了这个问题

对于有相同问题的人,这里是如何使用它:

准备

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;
}
for ($i = 1; $i <= 3; $i++) {
    $batch[] = $s3->getCommand('CopyObject', array(
        'Bucket'             => $bucket,
        'Key'                => "{$i}-{$file}",
        'CopySource'         => "{$bucket}/{$file}"
    ));
}
$results = CommandPool::batch($s3, $batch);
注意:不要忘记包括
CommandPool
名称空间:

use Aws\CommandPool;

最后,我使用AWS库中的
CommandPool::batch
函数解决了这个问题

对于有相同问题的人,这里是如何使用它:

准备

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;
}
for ($i = 1; $i <= 3; $i++) {
    $batch[] = $s3->getCommand('CopyObject', array(
        'Bucket'             => $bucket,
        'Key'                => "{$i}-{$file}",
        'CopySource'         => "{$bucket}/{$file}"
    ));
}
$results = CommandPool::batch($s3, $batch);
注意:不要忘记包括
CommandPool
名称空间:

use Aws\CommandPool;