2010-12-15 8 views
5

मैंने पिछले प्रश्नों को देखा है "एक संपूर्ण एस 3 बाल्टी का आकार कैसे प्राप्त करें।" यह कुछ अलग सवाल है - इसलिए अगर यह अस्पष्ट है तो मैं पहले से माफी माँगता हूं। मैं यह समझाने के लिए अपनी पूरी कोशिश करूंगा कि मैं क्या हासिल करने की कोशिश कर रहा हूं।गतिशील रूप से अमेज़ॅन एस 3 बाल्टी में फ़ाइलों का आकार प्राप्त करें

मैं वर्तमान में Amazon S3 PHP Class का उपयोग कर रहा हूं।

  1. मैं अपने MySQL डेटाबेस के माध्यम से लूप करने में सक्षम हो और मेरी S3 सर्वर पर फ़ाइलों के विशिष्ट फ़ाइल नाम प्राप्त करना चाहते हैं:

    यह मैं क्या हासिल करने की कोशिश कर रहा हूँ। (यह उपयोगकर्ता पर आधारित हो सकता है)।

  2. लूप के दौरान, अमेज़ॅन एस 3 बाल्टी (किसी भी तरह) से पूछें और मेरे MySQL पाश में मौजूद प्रत्येक फ़ाइल का फाइलसाइज प्राप्त करें।

  3. कुल अनुमानित बाइटसाइट प्राप्त करने के लिए सभी फाइलें जोड़ें।

तो, अनिवार्य रूप से, मान लें कि मेरे पास एक उपयोगकर्ता है जिसमें एस 3 बाल्टी पर 5 फाइलें हैं। मैं एस 3 बाल्टी से पूछताछ कैसे कर सकता हूं, यह देखने के लिए कि इस उपयोगकर्ता की 5 फाइलें मेरी बाल्टी में कितनी डेटा संग्रहित कर रही हैं?

मेरी क्षमा चाहते हैं कि यह समझना मुश्किल है। यदि आवश्यक हो, तो मैं फिर से व्यक्त कर सकता हूं।

सही दिशा में किसी भी झुकाव की सराहना की जाएगी।

उत्तर

11

आपको वास्तव में अपनी MySQL तालिका में फ़ाइल को संग्रहीत करना चाहिए। जानकारी प्राप्त करने के लिए तेज़, कम S3 लागत।

लेकिन ... इसे आजमाएं? http://aws.amazon.com/sdkforphp/:

$info = $s3->getObjectInfo($bucketName, $filename); 
print $info['size']; 
+2

वोट दें।" आपको वास्तव में अपनी माईस्क्ल तालिका में फाइलसाइज को संग्रहीत करना चाहिए " –

7

अब जब कि एडब्ल्यूएस एक समर्थन पीएचपी एसडीके जारी किया है, आप का उपयोग करने के लिए कि स्विचन में देख विचार करना चाह सकते।

इसमें ऑब्जेक्ट आकार प्राप्त करने के लिए एपीआई भी शामिल है: get_object_filesize()।

मैं जॉन वेंटिमिग्लिया से सहमत हूं। एस 3 के लिए प्रत्येक कॉल समय लेता है और पैसा खर्च करता है। यदि आप स्थानीय रूप से जानकारी स्टोर कर सकते हैं, तो यह एक बेहतर ग्राहक अनुभव (तेज़) प्रदान करेगा और सस्ता होगा।

+0

मुझे एडब्ल्यूएस PHP एसडीके से अवगत नहीं था। मुझे खेलना होगा इसके साथ। आप दोनों जानकारी संग्रहीत करने के बारे में सही हैं। मैं स्थानीय रूप से फाइलों को संग्रहीत करने की प्रक्रिया में हूं। बहुत धन्यवाद। – Dodinas

1

मैं अपने MYSQL में स्टोर करता हूं लेकिन कभी-कभी आपको साफ करने की आवश्यकता होती है और यह आपके MSYQL और S3 के बीच किसी भी मेल के बारे में जानना अच्छा होता है। जब मैं फ़ाइल आकार मैं सभी फ़ाइलों की सूची हो और

include("sdk.class.php"); 

     $s3 = new AmazonS3(); 

     $response = $s3->list_objects('mojag'); 
     foreach ($response->body as $object) 
     { 
      //print_r($object); 
      echo $object->Key.'('.$object->Size.')</br>'; 
      $size = $size+$object->Size; 

     } 
     $size = number_format($size/1024/1024, 2); 

     echo $size; 
3

अलावा chrisjmccreadie जवाब देने के लिए फ़ाइल आकार गिनती करने के लिए की जरूरत है।

विधि list_objects('') विधिबद्ध है जो 1000 से अधिक परिणाम प्रदान नहीं कर सकती है, क्योंकि डिफ़ॉल्ट 1000 है, इसलिए आपको पूर्ण सटीक परिणामों के लिए पृष्ठांकन के माध्यम से जाना होगा।

लेकिन आप get_object_list() विधि का उपयोग कर सकते हैं जो max-keys परिणाम लौटाएगा।

में शामिल हैं ("sdk.class।php ");

$s3 = new AmazonS3(); 

    $response = $s3->get_object_list('mojag'); 
    foreach ($response->body as $object) 
    { 
     //print_r($object); 
     echo $object->Key.'('.$object->Size.')</br>'; 
     $size = $size+$object->Size; 

    } 
    $size = number_format($size/1024/1024, 2); 

    echo $size; 
संबंधित मुद्दे