2017-02-24 15 views
5

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ür
aws 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

cevap

1

Bilmiyorum ama LastModified sütunda sorgulamak ve filtre nesneleri olabilir. Belirli bir süre sonra değiştirilen tüm dosyaları filtrelemek için kullanabileceğiniz budur. aws s3api list-objects --bucket "bucket-name" --prefix "some-prefix" --query "Contents[?LastModified>=\`2017-03-08\`]"

Bu, kabuk için php için benzer bir şeye sahip olabilir.

+0

Evet, kabuk belgelerinden, komut ['Query'] = 'sort_by (İçindekiler, & LastModified)' gibi bir şey denedim. Benzer bir şey aradığım şey. Yine de teşekkürler. –

+0

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' => ** –