| Under Construction This proposal is under construction and is not ready for review. |
<ac:macro ac:name="unmigrated-inline-wiki-markup"><ac:plain-text-body><![CDATA[
Zend_Service_Amazon_S3 is an implementation of a PHP user-stream wrapper for Amazon's Simple Storage Service (S3)Zend Framework: Zend_Service_Amazon_S3 Component Proposal
Proposed Component Name
Zend_Service_Amazon_S3
Developer Notes
http://framework.zend.com/wiki/display/ZFDEV/Zend_Service_Amazon_S3
Proposers
Justin Plock
Revision
1.0 - 10 March 2008: Initial revision. (wiki revision: 3)
Table of Contents
1. Overview
2. References
3. Component Requirements, Constraints, and Acceptance Criteria
- This component will implement the Amazon S3 API
- This component will use Zend_Http_Client to communicate with S3
- This component will implement a user-based stream wrapper for S3 (s3://)
4. Dependencies on Other Framework Components
- Zend_Http_Client
5. Theory of Operation
This component will be utilized using the stream_wrapper_register() PHP method to register a new user-based stream interface to S3. This allows the user to utilize existing fread(), fwrite(), fclose(), mkdir(), rmdir(), and stat() methods to directly interface with S3 buckets and objects.
6. Milestones / Tasks
- Milestone 1: [DONE] Design notes will be published here
- Milestone 2: Working prototype checked into the incubator supporting use cases
- Milestone 3: Unit tests exist, work, and are checked into SVN.
- Milestone 4: Initial documentation exists.
7. Class Index
- Zend_Service_Amazon_S3
8. Use Cases
| UC-01 |
|---|
require_once 'S3.php';
define('AWS_ACCESS_KEY', 'my-access-key');
define('AWS_SECRET_KEY', 'my-secret-key');
S3::setKeys(AWS_ACCESS_KEY, AWS_SECRET_KEY);
if (!stream_wrapper_register('s3', 'S3')) {
echo 'Could not register S3 stream';
exit(0);
}
mkdir('s3://php-test');
$f = fopen('s3://php-test/file.txt', 'w');
for ($i = 0; $i <= 10000; $i++) {
fwrite($f, "Line #$i");
}
fclose($f);
$f = fopen('s3://php-test/file.txt', 'r');
$data = '';
while (!feof($f)) {
$data .= fread($f, 1024);
}
fclose($f);
echo '<hr>';
echo nl2br($data);
echo '<hr/>';
$e = opendir('s3://');
while (($f = readdir($e)) !== false) {
echo "BUCKET: $f<BR>";
}
closedir($e);
$stat = stat('s3://php-test/file.txt');
var_dump($stat);
$stat = stat('s3://php-test');
var_dump($stat);
unlink('s3://php-test/file.txt');
rmdir('s3://php-test');