该函数是否会暂停 php 脚本,直到在 s3 服务器上找到该对象?
我将它放在 foreach 循环中,一张一张地上传图像。找到对象后,我调用一个方法在本地删除图像,然后删除本地文件夹(如果为空)。这是正确的处理方式吗?谢谢
foreach ($fileNames as $fileName)
{
$imgSize = getimagesize($folderPath . $fileName);
$width = (string)$imgSize[0];
$height = (string)$imgSize[1];
//upload the images
$result = $S3->putObject(array(
'ACL' => 'public-read',
'Bucket' => $bucket,
'Key' => $keyPrefix . $fileName,
'SourceFile' => $folderPath . $fileName,
'Metadata' => array(
'w' => $width,
'h' => $height
)
));
$S3->waitUntilObjectExists(array(
'Bucket' => $bucket,
'Key' => $keyPrefix . $fileName));
$this->deleteStoreDirectory($folderPath, $fileName);
}
waitUntilObjectExists
基本上是一个waiter以特定时间间隔定期检查(轮询)S3 以查看资源是否可用。脚本的执行将被阻止,直到找到资源或达到最大重试次数。
正如 AWS 文档所定义的:
服务员通过提供一种简单的方法来等待资源通过轮询资源进入特定状态,从而帮助更轻松地使用最终一致的系统。
默认情况下,waitUntilObjectExists
waiter 配置为尝试定位资源 20 次,每次尝试之间有 5 秒的延迟。您可以通过将附加参数传递给waitUntilObjectExists
method.
如果服务员在最大尝试次数后仍无法找到资源,则会抛出异常。
您可以在以下位置了解有关服务员的更多信息:
http://docs.aws.amazon.com/aws-sdk-php-2/guide/latest/feature-waiters.html http://docs.aws.amazon.com/aws-sdk-php-2/guide/latest/feature-waiters.html
对于您的用例,我认为致电没有意义waitUntilObjectExists
上传对象后,除非相同的 PHP 脚本稍后在代码中尝试从 S3 检索相同的对象。
If the putObject
API 调用已返回成功的响应,那么该对象最终将显示在 S3 中,并且您不一定需要等待这种情况发生才能删除本地文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)