Amazon AWSSDKforPHP 太慢了
你好呀,
我正在使用 Amazon AWSSDKforPHP 将我的 Web 应用程序与 S3 连接起来。但是,该过程或向服务发出请求时存在问题,导致速度太慢。
例如,我有这个代码:
// Iterate an array of user images
foreach($images as $image){
// Return the Bucket URL for this image
$urls[] = $s3->get_object_url($bucket, 'users/'.trim($image).'.jpg', '5 minutes');
}
假设 $images 是一个用户图片数组,这将返回一个名为 $urls 的数组,该数组具有(正如他的名字所说)带有 5 分钟凭据的图片的 URL。这个请求至少需要 6 秒,包含 35 张图像,没关系。但是....当存储桶中不存在图片时,我想为用户分配一个默认图像,例如“images/noimage.png”。这是代码:
// Iterate an array of user images
foreach($images as $image){
// Check if the object exists in the Bucket
if($s3->if_object_exists($bucket, 'users/'.trim($image).'.jpg')){
// Return the Bucket URL for this image
$urls[] = $s3->get_object_url($bucket, 'users/'.trim($image).'.jpg', '5 minutes');
} else {
// Return the default image
$urls[] = 'http://www.example.com/images/noimage.png';
}
}
条件有效,但慢。在条件“$s3->if_object_exists()”的情况下,该脚本至少需要 40 秒才能处理 35 张图像!
我修改了我的脚本,使用 cURL 发出请求:
// Iterate an array of user images
foreach($images as $image){
// Setup cURL
$ch = curl_init($s3->get_object_url($bucket, 'users/'.trim($image).'.jpg', '1 minutes') );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
// Get Just the HTTP response code
$res = curl_getinfo($ch,CURLINFO_HTTP_CODE);
if($res == 200){ //the image exists
$urls[] = $s3->get_object_url($bucket, 'users/'.trim($image).'.jpg', '5 minutes');
}else{ // The response is 403
$urls[] = 'http://www.example.com/images/noimage.png';
}
}
而这个修改后的脚本需要 16 到 18 秒。这是一个很大的区别,但仍然需要很多时间:(。
拜托,非常感谢任何帮助。
谢谢你。