アマゾンAWSSDKforPHP遅すぎるアマゾンAWSSDKforPHPが遅すぎる
こんにちは、
。しかし、これを遅くするようなサービスへのリクエストやプロセスの問題があります。
$画像は、ユーザーの写真の配列であり、これは、配列が(彼の名前が言うように)持っている$ URLを呼ば股関節画像のURLを返すと仮定すると// 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');
}
:
例えば、私はこのコードを持っています資格情報を5分間入力します。このリクエストは35枚の画像で少なくとも6秒かかります。これは問題ありません。しかし....画像がバケツに存在しない場合、私はユーザーのためのデフォルトの画像を割り当てたいと思っています。これは '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';
}
}
そして条件は動作しますが、SLOOOOOW。 "$ s3-> if_object_exists()"という条件では、スクリプトは35枚の画像で少なくとも40秒かかります!
私はカールを使用して要求すること、私のスクリプトを変更した:
// 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秒かかります。これは大きな違いですが、それはまだ時間:(多くのです。
してください、任意のヘルプはそんなに高く評価されています。
ありがとう。
私はS3 APIについて知りませんが、バケット内のファイルのリストを尋ねることができますし、文字列に一致する/スクリプト内で自分自身を検索しますか? 34文字の文字列一致テストは、PHPスクリプト内で長時間実行する方法はありません。 – thatidiotguy
私はあなたの応答を理解していない: - | – Yefb
それ以上は説明できません。バケット内のすべてのファイルのリストを要求します。自分のスクリプトで自分で検索してください。完了しました。アマゾンAPIを待つ必要はありません。 – thatidiotguy