From 6db0d2b63ee99968d9bb18b14c0eae25bd7eee34 Mon Sep 17 00:00:00 2001 From: Adrian Lopez Date: Mon, 19 Jun 2017 15:56:12 +0100 Subject: [PATCH 1/3] Make sure that all the objects are retrieved. The listObjects function is limited to 1000 objects so if the bucket contains more than those objects then some of them will not be retrieved when using the listObjects function. An iterator is used instead as suggested in the AmazonS3 developer guide: http://docs.aws.amazon.com/AmazonS3/latest/dev/ListingObjectKeysUsingPHP.html --- src/Vinelab/Cdn/Providers/AwsS3Provider.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Vinelab/Cdn/Providers/AwsS3Provider.php b/src/Vinelab/Cdn/Providers/AwsS3Provider.php index 8c45720..784eb7e 100755 --- a/src/Vinelab/Cdn/Providers/AwsS3Provider.php +++ b/src/Vinelab/Cdn/Providers/AwsS3Provider.php @@ -380,16 +380,16 @@ private function getFilesAlreadyOnBucket($assets) { $filesOnAWS = new Collection([]); - $files = $this->s3_client->listObjects([ - 'Bucket' => $this->getBucket(), + $files = $this->s3_client->getIterator('ListObjects', [ + 'Bucket' => $this->getBucket() ]); - if (!$files['Contents']) { + if (!$files->current()) { //no files on bucket. lets upload everything found. return $assets; } - foreach($files['Contents'] as $file) { + foreach($files as $file) { $a = ['Key' => $file['Key'], "LastModified" => $file['LastModified']->getTimestamp(), 'Size' => $file['Size']]; $filesOnAWS->put($file['Key'], $a); } From 9093513a9f614265d9e03623104310d54abb02a6 Mon Sep 17 00:00:00 2001 From: AdrianHL <16022257+AdrianHL@users.noreply.github.com> Date: Mon, 9 Apr 2018 12:28:54 +0100 Subject: [PATCH 2/3] Update AwsS3Provider.php --- src/Vinelab/Cdn/Providers/AwsS3Provider.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Vinelab/Cdn/Providers/AwsS3Provider.php b/src/Vinelab/Cdn/Providers/AwsS3Provider.php index 784eb7e..8e1f65e 100755 --- a/src/Vinelab/Cdn/Providers/AwsS3Provider.php +++ b/src/Vinelab/Cdn/Providers/AwsS3Provider.php @@ -384,7 +384,7 @@ private function getFilesAlreadyOnBucket($assets) 'Bucket' => $this->getBucket() ]); - if (!$files->current()) { + if ((is_array($files) && !$contents['Contents']) || !$files->current()) { //no files on bucket. lets upload everything found. return $assets; } From 2f2b7c34cb4278373907c19f26a8c7018540385b Mon Sep 17 00:00:00 2001 From: AdrianHL <16022257+AdrianHL@users.noreply.github.com> Date: Mon, 9 Apr 2018 12:32:32 +0100 Subject: [PATCH 3/3] Update AwsS3Provider.php --- src/Vinelab/Cdn/Providers/AwsS3Provider.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Vinelab/Cdn/Providers/AwsS3Provider.php b/src/Vinelab/Cdn/Providers/AwsS3Provider.php index 8e1f65e..21216db 100755 --- a/src/Vinelab/Cdn/Providers/AwsS3Provider.php +++ b/src/Vinelab/Cdn/Providers/AwsS3Provider.php @@ -384,7 +384,7 @@ private function getFilesAlreadyOnBucket($assets) 'Bucket' => $this->getBucket() ]); - if ((is_array($files) && !$contents['Contents']) || !$files->current()) { + if (empty($files) || !$files->current()) { //no files on bucket. lets upload everything found. return $assets; }