1
例如,我試圖創建一個類似於doesObjectExist()
的方法,但對於名爲doObjectsExist()
的多個文件。問題是如果所有文件都存在,我需要它返回true,如果只有一個文件不存在,則返回false。這是我目前的方法。如果即使一個CommandPool失敗,Amazon S3 PHP SDK也會返回false,否則返回true
public function doObjectsExist(...$objects) {
$client = $this->client;
$bucket = $this->bucket;
$commands = [];
foreach ($objects as $key) {
$commands[] = $client->getCommand('HeadObject', [
'Bucket' => $bucket,
'Key' => $key
]);
}
$pool = new CommandPool($client, $commands, [null,
'rejected' => function (AwsException $reason, $iterKey, PromiseInterface $aggregatePromise) {
return false;
}
]);
$promise = $pool->promise();
try {
$promise->wait();
return true;
}
catch (AwsException $e) {
return false;
}
}
最初有一個變量來跟蹤丟失,但它並沒有等待設置。吮吸,幾乎沒有關於這個在線信息。 –
我不明白你的意思是「但它沒有等待設置」。 –
例如,你的變量名'$ missing'在一個被拒絕的CommandPools中有'$ missing = true'。如果我在try/catch塊的'$ promise-> wait()'之後立即執行'if($ missing)',諷刺的是不會等待'$ missing'被設置爲true。我希望我清除它。 –