मेरी वर्तमान प्रोजेक्ट में मुझे नई फ़ाइलों के लिए हर 4 सेकंड में मेरी एस 3 बाल्टी सामग्री जांचनी होगी।aws-php-sdk ListObjects पर एक "sort_by" डालें
यह स्क्रिप्ट हर बार लगभग 3 घंटे तक चलती है जब सेवा का उपयोग किया जाता है, और अंत में एक ही उपसर्ग में लगभग 2700 फाइलें होंगी।
यह उन फ़ाइलों को सूचीबद्ध करने के लिए मेरी समारोह है:
public function listFiles($s3Prefix, $limit, $get_after = ''){
$command = $this->s3Client->getCommand('ListObjects');
$command['Bucket'] = $this->s3_bucket;
$command['Prefix'] = $s3Prefix;
$command['MaxKeys'] = $limit;
$command['Marker'] = $s3Prefix.'/'.$get_after;
//command['Query'] = 'sort_by(Contents,&LastModified)';
$ret_s3 = $this->s3Client->execute($command);
$ret['truncated'] = $ret_s3['IsTruncated'];
$ret['files'] = $ret_s3['Contents'];
return $ret;
}// listFiles
क्या मैं क्या ज़रूरत है LastModified क्षेत्र से फ़ाइलें, आदेश प्राप्त है, इसलिए मैं 2k फ़ाइलों पर लाने की जरूरत नहीं है। वहाँ php एपीआई में जोड़ने के लिए
command['Query'] = 'sort_by(Contents,&LastModified)';
की तरह एक अतिरिक्त पैरामीटर है?
---------- संपादित ------------
के रूप में अभिषेक मीणा जवाब के लिए इशारा किया, खोल में यह
उपयोग करना संभव हैaws s3api list-objects --bucket "bucket-name" --prefix "some-prefix" --query "Contents[?LastModified>=\`2017-03-08\`]"
मैं जो देख रहा हूं वह PHP में इसे कार्यान्वित करने का तरीका है।
पीएचपी एपीआई: https://github.com/aws/aws-sdk-php
हाँ, शेल प्रलेखन से मैंने आदेश ['क्वेरी'] = 'sort_by (सामग्री, और अंतिम संशोधित) जैसी कुछ कोशिश की। ऐसा कुछ है जिसे मैं ढूंढ रहा हूं। हालांकि धन्यवाद। –
चूंकि यह सब एक ही एपीआई परिभाषा में परिवर्तित हो रहा है। आप इसे आज़मा सकते हैं और 'कमांड [' क्वेरी '] = "सामग्री [? LastModified> = $ date" की जांच कर सकते हैं;' जहां $ तारीख में आपके डेटाटाइम को [aws-sdk-php] में उल्लिखित किया जाएगा (http: // docs .aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html # listobjects) परिणाम खंड। ** 'LastModified' => ** –