अमेज़न AWSSDKforPHP बहुत धीमी गति सेअमेज़न AWSSDKforPHP बहुत धीमी गति से
नमस्ते,
मैं S3 के साथ अपने वेब अनुप्रयोग को जोड़ने के लिए अमेज़न AWSSDKforPHP उपयोग कर रहा हूँ। लेकिन, प्रक्रिया के साथ कोई समस्या है या सेवा के लिए अनुरोध कर रहा है जो इसे बहुत धीमा कर देता है।
उदाहरण के लिए, मैं इस कोड है:
// 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');
}
जाना चाहिए कि $ छवियों उपयोगकर्ता चित्रों की एक सरणी है, यह एक सरणी $ यूआरएल है (उसका नाम कहते हैं) था चित्रों का URL भी कहा जाता रिटर्न 5 मिनट के लिए प्रमाण पत्र के साथ। इस अनुरोध में 35 छवियों के साथ कम से कम 6 सेकंड लगते हैं, और यह ठीक है। लेकिन .... जब चित्र बाल्टी में मौजूद नहीं है, तो मैं उपयोगकर्ता के लिए एक डिफ़ॉल्ट छवि असाइन करना चाहता हूं, जैसे 'छवियों/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 सेकंड लगते हैं!
मैं अपने स्क्रिप्ट में बदलाव कर दिया, अनुरोध 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 के बीच सेकंड लेता है। यह एक बड़ा अंतर है, लेकिन यह अभी भी बहुत समय है :(।
कृपया, किसी भी मदद के इतना की सराहना की है।
धन्यवाद।
मुझे एस 3 एपीआई के बारे में पता नहीं है, लेकिन क्या आप बाल्टी में फाइलों की एक सूची मांग सकते हैं और स्ट्रिंग मिलान/स्क्रिप्ट में स्वयं को खोज सकते हैं? PHP स्ट्रिप में लंबे समय तक 34 स्ट्रिंग मिलान परीक्षणों को कहीं भी नहीं लेना चाहिए। – thatidiotguy
मुझे आपकी प्रतिक्रिया नहीं समझा: - | – Yefb
मैं इसे किसी भी बेहतर समझा नहीं सकता। बाल्टी में सभी फाइलों की एक सूची के लिए पूछें। अपनी स्क्रिप्ट में स्वयं के माध्यम से खोजें। किया हुआ। अमेज़ॅन एपीआई पर इंतजार करने की कोई ज़रूरत नहीं है। – thatidiotguy