No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
README.md
composer.json
composer.lock
create_large_csv.php
index.php

README.md

s3-get-with-range-php

S3のGETリクエストで Content-Range ヘッダーの検証を行います。

下準備

  1. composer install でdependenciesを解決します
  2. 次にテスト用のCSVを作ります。以下を実行して下さい:
$ php create_large_csv.php > ./awesome.csv
  1. このコードでは実際のAmazon S3は使っておらず、minioを使っているので起動します:
$ docker run --rm -e MINIO_ACCESS_KEY=MINIO4DEV -e MINIO_SECRET_KEY=MINIO4DEV -p 9000:9000 minio/minio server /data

(オプションは各自に任せます)

  1. 続いてAWS CLIでバケットを作り、先程のS3をアップロードします:
$ export AWS_ACCESS_KEY_ID=MINIO4DEV; export AWS_SECRET_ACCESS_KEY=MINIO4DEV
{
    "Location": "/test"
}

$ aws --endpoint-url http://127.0.0.1:9000 s3api put-object --bucket test --key awesome.csv --body ./awesome.csv
{
    "ETag": "\"965b5c82c2541da6ee5112c640aaed31\""
}

これで準備完了です。

テスト

以下のコマンドで実行:

$ php index.php
.
.
.
9998, 2018-10-09 18:48:20 / 12.0000 MB
9999, 2018-03-09 07:39:25 / 12.0000 MB
10000, 2018-07-19 01:12:00 / 12.0000 MB

出力内容は各行の最初と最後のセルの値と、現在のメモリ使用量です。 見ての通り、CSVファイル自体が大きくてもメモリ使用量が抑えられています。****