<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ebene7 &#187; Zend_Service</title>
	<atom:link href="http://blog.ebene7.com/schlagwort/zend_service/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ebene7.com</link>
	<description></description>
	<lastBuildDate>Tue, 04 Jun 2013 18:57:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Amazon S3 mit PHP-Stream Wrapper verwenden</title>
		<link>https://blog.ebene7.com/2011/01/21/amazon-s3-mit-php-stream-wrapper-verwenden/</link>
		<comments>https://blog.ebene7.com/2011/01/21/amazon-s3-mit-php-stream-wrapper-verwenden/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 05:00:07 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Qualitätssicherung]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[Stream]]></category>
		<category><![CDATA[Wrapper]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Zend_Cloud]]></category>
		<category><![CDATA[Zend_Service]]></category>

		<guid isPermaLink="false">http://blog.ebene7.com/?p=2645</guid>
		<description><![CDATA[In der letzten Woche habe ich ja bereits über die Komponente Zend_Cloud geschrieben und ungetestet behauptet, dass sie sicherlich leicht zu verwenden sei. Das Testen habe ich nun nachgeholt und habe erwartungsgemäß keine bösen Überraschungen erlebt. Ganz im Gegenteil, sogar! &#8230; <a href="https://blog.ebene7.com/2011/01/21/amazon-s3-mit-php-stream-wrapper-verwenden/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In der letzten Woche habe ich ja bereits über die Komponente <a href="http://blog.ebene7.com/2011/01/13/auf-wolke-sieben-mit-zend_cloud/" target="_self">Zend_Cloud</a> geschrieben und ungetestet behauptet, dass sie sicherlich leicht zu verwenden sei. Das Testen habe ich nun nachgeholt und habe erwartungsgemäß keine bösen Überraschungen erlebt.</p>
<p>Ganz im Gegenteil, sogar! Während meiner Arbeit mit Amazon S3 kam mir der Gedanke, dass es doch sehr bequem wäre, wenn es einen Stream Wrapper gäbe und man die PHP-eigenen File-Funktionen zum Lesen und Schreiben verwenden könnte.</p>
<p>Nach kurzem Suchen habe ich, wen wird es überraschen, eine noch einfachere Lösung gefunden. Zuerst aber mein Versuch mit Zend_Cloud Dateien nach Amazon S3 zu kopieren.<span id="more-2645"></span></p>
<h3>Zend_Cloud</h3>
<p>Einfach die <a href="http://framework.zend.com/manual/de/zend.cloud.storageservice.html" target="_blank">Storage-Factory</a> mit den nötigen Zugangsdaten füttern und schon kann es losgehen.</p>
<pre>&lt;?php
$adapter      = 'Zend_Cloud_StorageService_Adapter_S3';
$amazonKey    = '&lt;amazon-key&gt;';
$amazonSecret = '&lt;amazon-secret&gt;';
$bucketName   = 'mein-bucket';

$storage = Zend_Cloud_StorageService_Factory::getAdapter(array(
  Zend_Cloud_StorageService_Factory::STORAGE_ADAPTER_KEY =&gt; $adapter,
  Zend_Cloud_StorageService_Adapter_S3::AWS_ACCESS_KEY   =&gt; $amazonKey,
  Zend_Cloud_StorageService_Adapter_S3::AWS_SECRET_KEY   =&gt; $amazonSecret,
  Zend_Cloud_StorageService_Adapter_S3::BUCKET_NAME      =&gt; $bucketName,
));</pre>
<p>Die Factory liefert uns ein gebrauchsfertiges Objekt zurück, mit dem wir nun Dateien erzeugen können.</p>
<pre>&lt;?php
$filename = 'example.txt';
$data = file_get_contents($filename);
$storage-&gt;storeItem($filename, $data);</pre>
<p>Ebenso einfach wie das Erstellen ist auch das Lesen&#8230;</p>
<pre>&lt;?php
echo $storage-&gt;fetchItem($filename));</pre>
<p>&#8230;oder Löschen einer Datei.</p>
<pre>&lt;?php
$storage-&gt;deleteItem($filename);</pre>
<h3>Zend_Service</h3>
<p>Nun hatte ich ja versprochen, dass es noch einfacher geht. Die Komponente Zend_Service bietet ebenfalls eine Schnittstelle für <a href="http://framework.zend.com/manual/de/zend.service.amazon.s3.html" target="_blank">Amazon S3</a> an und auch gleich eine Methode, diese als Stream Wrapper zu registrieren.</p>
<p>Zuerst muss natürlich das Objekt mit den Zugangsdaten erzeugt werden.</p>
<pre>&lt;?php
$amazonKey    = '&lt;amazon-key&gt;';
$amazonSecret = '&lt;amazon-secret&gt;';

$s3 = new Zend_Service_Amazon_S3($amazonKey, $amazonSecret);
$s3-&gt;registerStreamWrapper('s3');</pre>
<p>Ab jetzt ist der Stream Wrapper mit dem Schema &#8216;s3://&#8217; im System bekannt und mit den gewohnten File-Funktionen verwendet werden. Dadurch bleibt der Code schlank und man muss sich nicht für jede Speicherart eine andere Schnittstelle merken.</p>
<p>Nicht zuletzt können wir unsere Dateien nun organisieren wie und wo wir wollen ohne dabei wieder den Code umschreiben zu müssen.</p>
<pre>&lt;?php
file_put_contents("s3://&lt;bucket-name&gt;/halloWelt", "Hallo Welt"); // einfach schreiben
echo file_get_contents("s3://&lt;bucket-name&gt;/halloWelt"); // und wieder lesen</pre>
<p>Nebenbei bemerkt ist es auch recht einfach, sich einen eigenen Stream Wrapper für spezielle Anwendungfälle selber zu schreiben, aber dazu vielleicht mehr in einem weiteren Artikel.</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.ebene7.com/2011/01/21/amazon-s3-mit-php-stream-wrapper-verwenden/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
