A stream-based wrapper for accessing S3/HTTP
PHP
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 1 commit ahead, 1 commit behind lox:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
classes/Facade
tests
.gitignore
LICENSE
composer.json
composer.lock
readme.md
test-http.php
test-s3.php

readme.md

Façade

Facade is an open-source library for memory-effecient consumption of stream-based protocols like HTTP.

Included is a streaming HTTP client and a streaming AWS S3 client. 99designs uses these to stream large designs from AWS to upstream clients without buffering the entire file in memory or on disk at any one time.

Examples

Streaming a file from disk to S3:

<?php

$s3 = new Facade_S3(getenv('AWS_ACCESS_KEY_ID'), getenv('AWS_SECRET_ACCESS_KEY'));
$file = '/uploads/largeimage.jpg';

$response = $s3
	->put("/llamas/largeimage.jpg")
	->setStream(Facade_Stream::fromFile($file))
	->setContentType('image/jpeg')
	->setHeader('Content-MD5: '.base64_encode(md5_file($file, true)))
	->send();

Streaming an S3 file to a client:

<?php

$s3 = new Facade_S3(getenv('AWS_ACCESS_KEY_ID'), getenv('AWS_SECRET_ACCESS_KEY'));

$response = $s3
  ->get('/llamas/largeimage.jpg')
  ->send();

stream_copy_to_stream($response->getStream(), STDOUT);