Güncel projemde, yeni dosyalar için her 4 saniyede bir S3 kova içeriğimi kontrol etmem gerekiyor.aws-php-sdk'ye bir "sort_by" yerleştirme ListObjects
Bu komut, hizmetin kullanıldığı her seferinde yaklaşık 3 saat boyunca çalışacak ve tek bir önek sonunda yaklaşık 2700 dosyaya sahip olacak.
Bu
bu dosyaları listelemek için benim fonksiyonudur: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
Benim ihtiyacım yok LastModified alana göre dosyaları, sipariş almak, yani 2k dosyalar üzerinden alınamayacak gerekmez. php API eklemek için
command['Query'] = 'sort_by(Contents,&LastModified)';
gibi ekstra bir parametre var mı? ------------
olarak Abhishek Meena cevap işaret EDITED
----------, kabukta
kullanmak mümkündüraws s3api list-objects --bucket "bucket-name" --prefix "some-prefix" --query "Contents[?LastModified>=\`2017-03-08\`]"
Neye bakıyorum, bunu PHP'de nasıl uygulayacağım.
PHP API: onlar LastModified
üsleri nesneleri sıralamak için bazı şey varsa https://github.com/aws/aws-sdk-php
Evet, kabuk belgelerinden, komut ['Query'] = 'sort_by (İçindekiler, & LastModified)' gibi bir şey denedim. Benzer bir şey aradığım şey. Yine de teşekkürler. –
Tüm bunlar aynı API tanımına dönüştürüldüğü için. Bunu deneyebilir ve 'komutunu ['Query'] =" İçindekiler [? LastModified> = $ date ";' = $ tarihinin [aws-sdk-php] (http: // docs .aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html # listobjects) sonuç bölümü. ** 'LastModified' => ** –