<?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>Ralfs Zend Framework und PHP Blog &#187; Tipps und Tricks</title>
	<atom:link href="http://www.ralfeggert.de/kategorie/tipps-und-tricks/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ralfeggert.de</link>
	<description>Bloggen über das Zend Framework, PHP und anderes Gedöns</description>
	<lastBuildDate>Tue, 29 Sep 2009 07:15:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Eigenen Dojo Build für Zend_Dojo erstellen</title>
		<link>http://www.ralfeggert.de/2009/08/25/eigenen-dojo-build-fur-zend_dojo-erstellen/</link>
		<comments>http://www.ralfeggert.de/2009/08/25/eigenen-dojo-build-fur-zend_dojo-erstellen/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 21:25:19 +0000</pubDate>
		<dc:creator>Ralf Eggert</dc:creator>
				<category><![CDATA[Tipps und Tricks]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.ralfeggert.de/?p=448</guid>
		<description><![CDATA[Wer immer sich intensiver mit Zend_Dojo und damit auch mit dem Dojo Toolkit auseinander setzt, kommt irgend wann an den Punkt, dass die Website einfach zu langsam geworden ist. Dies liegt daran, dass Dojo in sehr viele Dateien aufgesplittet ist, die beim Seitenaufbau erst einmal geladen werden müssen. Da dies bei einem Formular, welches viele [...]]]></description>
			<content:encoded><![CDATA[<p>Wer immer sich intensiver mit <strong>Zend_Dojo</strong> und damit auch mit dem <strong>Dojo Toolkit</strong> auseinander setzt, kommt irgend wann an den Punkt, dass die Website einfach zu langsam geworden ist. Dies liegt daran, dass Dojo in sehr viele Dateien aufgesplittet ist, die beim Seitenaufbau erst einmal geladen werden müssen. Da dies bei einem Formular, welches viele verschiedene Dijits (so heissen die speziellen Formularelemente von Dojo) verwendet, kann der Seitenaufbau schon mal um mehrere Sekunden verzögert werden. Um dies zu optimieren, bietet Dojo ein spezielles <a href="http://docs.dojocampus.org/build/index?action=show&amp;redirect=build" target="_blank">Build-System</a>, welches die Vielzahl von zu ladenden Dateien in einer Datei zusammen fügt und dann komprimiert. Dies beschleunigt den <strong>Seitenaufbau</strong> merklich.</p>
<p>Doch wie funktioniert dies nun mit der im <strong>Zend Framework</strong> enthaltenen Dojo Version. Als erstes musst du natürlich eine voll Zend Framework Version <a href="http://framework.zend.com/download/current/" target="_blank">herunterladen</a> (full package). Diese Datei entpackst du dann, z.B. ins Verzeichnis /home/zf/ZendFramework-1.9.2 oder so. Nun öffnest du unter Linux eine Konsole (unter Windows eine Eingabeaufforderung oder wie die Dinger heissen). Dort gibst du ein:</p>
<p><code>cd /home/zf/ZendFramework-1.9.2/externals/dojo/util/buildscripts<br />
./build.sh profileFile=profiles/standard.profile.js action=clean,release version=1.3.1 releaseName=</code></p>
<p>Nun wird dein Build anhand des Standard Profils für dich automatisch erstellt. Es werden übrigens noch ein Dutzend weitere Profile bereit gestellt, die im Verzeichnis /home/zf/ZendFramework-1.9.2/externals/dojo/util/buildscripts/profiles zu finden sind. Du kannst aber auch eine <a href="http://docs.dojocampus.org/build/index?action=show&amp;redirect=build#profiles" target="_blank">eigene Profildatei</a> erstellen, wenn du ans Finetuning gehen möchtest. Wenn das Gerödel fertig ist, findest du dein <strong>Build</strong> im Verzeichnis /home/zf/ZendFramework-1.9.2/externals/dojo/release. Dort sollten mindestens die drei Unterverzeichnisse dijit/, dojo/ und dojox/ enthalten sein. Diese drei Verzeichnisse kopierst du nun in das Verzeichnis /public/js deines Projektes. Wenn du vorher mit den Originaldateien (also ungepackt) gearbeitet hast, solltest du die vorhandenen Unterverzeichnisse erst einmal entfernen und danach deine Build-Verzeichnisse hinein kopieren. Das war schon die halbe Miete.</p>
<p>Das Einbinden erfolgt dann wie gewohnt in einem Layout- oder View-Skript:</p>
<p><code>if ($this-&gt;dojo()-&gt;isEnabled())<br />
{<br />
$this-&gt;dojo()-&gt;setLocalPath('/js/dojo/dojo.js');<br />
$this-&gt;dojo()-&gt;addStyleSheetModule('dijit.themes.tundra');<br />
echo $this-&gt;dojo();<br />
}<br />
</code></p>
<p>Wenn du nun deine Seite neu aufrufst und durch die Formulare klickst, sollten diese deutlich schneller aufgebaut werden.</p>
<p>Ausprobieren! Und bei Fragen, unten sind die Kommentare!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ralfeggert.de/2009/08/25/eigenen-dojo-build-fur-zend_dojo-erstellen/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Zend Framework Performance optimieren</title>
		<link>http://www.ralfeggert.de/2008/11/04/zend-framework-performance-optimieren/</link>
		<comments>http://www.ralfeggert.de/2008/11/04/zend-framework-performance-optimieren/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 19:04:43 +0000</pubDate>
		<dc:creator>Ralf Eggert</dc:creator>
				<category><![CDATA[Tipps und Tricks]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://www.ralfeggert.de/?p=330</guid>
		<description><![CDATA[Das Release 1.7 vom Zend Framework steht ja bekanntermaßen im Zeichen der Performance Optimierung. Bis das Release endlich erscheint, wird in vielen Bereichen die Performance optimiert, um die Laufzeiten einen Zend Framework Anwendung zu optimieren. Erste Erfolge bei Zend_Loader konnten wohl schon erzielt werden. Zudem ist meines Wissens ein eigenes Kapitel zum Thema Performance für [...]]]></description>
			<content:encoded><![CDATA[<p>Das Release 1.7 vom <strong>Zend Framework</strong> steht ja bekanntermaßen im Zeichen der <strong>Performance Optimierung</strong>. Bis das Release endlich erscheint, wird in vielen Bereichen die Performance optimiert, um die Laufzeiten einen Zend Framework Anwendung zu optimieren. Erste Erfolge bei Zend_Loader konnten wohl schon erzielt werden. Zudem ist meines Wissens ein eigenes Kapitel zum Thema Performance für das Manual geplant.</p>
<p>Till Klampaeckel hat nun <a href="http://till.vox.com/library/post/zendframework-performance.html" target="_blank">einen sehr lesenswerten Beitrag</a> zur Performance Steigerung des Zend Frameworks veröffentlicht. Er beschreibt eingangs die aktuelle Situation für das Projekt, wie viele Zugriffe es hat und wie der technische Background ist. Danach fasst er seine Erfahrungen zusammen und schneidet folgende Themen an:</p>
<ul>
<li>APC einsetzen</li>
<li>Konfigurationseinstellungen</li>
<li>Alle require_once Aufrufe durch den Autoloader von Zend_Loader ersetzen (bringt am meisten)</li>
<li>Zend_Loader aufbohren und optimieren</li>
<li>Datenbankergebnisse cachen</li>
<li>Metadaten Cache für Zend_Db_Table aktivieren</li>
<li>Apache Konfiguration anpassen</li>
</ul>
<p>Jeder, der sich intensiv mit dem Zend Framework beschäftigt, sollte sich den Beitrag von Till aufmerksam durchlesen. Interessant sind auch die Kommentare zu dem Beitrag.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ralfeggert.de/2008/11/04/zend-framework-performance-optimieren/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Wie PHP 4 und PHP 5 parallel unter Windows installieren?</title>
		<link>http://www.ralfeggert.de/2006/09/22/installation-php4-php5-windows-parallel/</link>
		<comments>http://www.ralfeggert.de/2006/09/22/installation-php4-php5-windows-parallel/#comments</comments>
		<pubDate>Fri, 22 Sep 2006 07:49:12 +0000</pubDate>
		<dc:creator>Ralf Eggert</dc:creator>
				<category><![CDATA[Tipps und Tricks]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.ralfeggert.de/2006/09/22/installation-php4-php5-windows-parallel/</guid>
		<description><![CDATA[Für alle, die auf ihrem Windows Rechner sowohl PHP 4 als auch PHP 5 parallel mit einem Apache Webserver installieren möchten, habe ich hier eine kurze Anleitung zusammengestellt. Sie erhebt nicht den Anspruch auf Vollständigkeit und kann auch nicht alle Eventualitäten abdecken. Ich hoffe aber, dass mit dieser Anleitung das Grundprinzip ein wenig klarer wird.
Vorbereitung
Zur [...]]]></description>
			<content:encoded><![CDATA[<p>Für alle, die auf ihrem Windows Rechner sowohl <strong>PHP 4</strong> als auch <strong>PHP 5</strong> parallel mit einem <strong>Apache</strong> Webserver installieren möchten, habe ich hier eine kurze Anleitung zusammengestellt. Sie erhebt nicht den Anspruch auf Vollständigkeit und kann auch nicht alle Eventualitäten abdecken. Ich hoffe aber, dass mit dieser Anleitung das Grundprinzip ein wenig klarer wird.</p>
<h3>Vorbereitung</h3>
<p>Zur Vorbereitung der Installation mußt du dir folgende Pakete auf deinem Rechner laden:</p>
<ul>
<li><a href="http://httpd.apache.org/">Apache Webserver</a>: Je nachdem, welche Version du verwenden möchtest, suche nach dem Win32 Binary (MSI Installer), weil dieser sich am einfachsten installieren lässt</li>
<li><a href="http://www.php.net/downloads.php">PHP 4 und PHP 5</a>: Ich bevorzuge die Windows Binaries als Zip Package, weil sich die einfach entpacken lassen.</li>
<li><a href="http://dev.mysql.com/downloads/mysql/5.0.html">MySQL</a>: Die Installation ist zwar nicht Thema dieses Beitrages, aber du findest auf der Website sowohl Zip Packages als auch MSI Installer zum Installieren unter Windows.</li>
</ul>
<p>Ich installiere das <strong>Wamp</strong> immer im Verzeichnis "c:\wamp", also musst du das Verzeichnis bei dir auch noch anlegen, bevor es losgehen kann.</p>
<p><span id="more-46"></span></p>
<h3>Apache installieren</h3>
<p>Durch einen Klick auf die .msi Datei startet die Installation. Achte dabei darauf, dass der Apache Webserver in das Verzeichnis "c:\wamp" installiert wird. Gebe hier nicht noch ein Unterverzeichnis wie "Apache" an, weil bei der Installation sowieso ein entsprechendes Unterverzeichnis installiert wird. Am besten installierst du auch gleich den entsprechenden Windows Dienst. Das sollte im MSI Installer (wenn ich mich richtig erinnere) automatisch abgefragt bzw. durchgeführt werden.</p>
<h3>PHP 4 und PHP 5 installieren</h3>
<p>Die beiden Zip Packages entpackst du einfach in das Verzeichnis "c:\wamp". Dann nennst du die beiden Verzeichnisse in "php4" bzw. "php5" um. Das macht die Konfiguration nachher einfacher. Das war es dann schon. Alternativ kannst du nun noch MySQL installieren. Achte auch dabei darauf, dass es im Verzeichnis "c:\wamp\mysql" installiert wird. Danach müsste dein Verzeichnis wie folgt aussehen:</p>
<div class="codebox">
c:\wamp\Apache<br />
c:\wamp\mysql<br />
c:\wamp\php4<br />
c:\wamp\php5
</div>
<h3>Apache konfigurieren</h3>
<p>Der Apache Webserver weiß bisher noch nicht, wann er PHP 4 und PHP 5 verwenden soll. Dies müssen wir ihm nun noch beibringen. Öffne die Datei "c:\wamp\Apache\conf\httpd.conf" und füge an das Ende folgende Zeilen ein. </p>
<div class="codebox">
    ScriptAlias /php4/ "C:/wamp/php4/"<br />
    AddType application/x-httpd-php .php<br />
    AddType application/x-httpd-php .php4<br />
    Action application/x-httpd-php "/php4/php.exe"</p>
<p>    ScriptAlias /php5/ "C:/wamp/php5/"<br />
    AddType application/x-httpd-php5 .php5<br />
    Action application/x-httpd-php5 "/php5/php-cgi.exe"
</p></div>
<p>Nun werden Dateien mit der Endung .php und .php4 durch PHP 4 geparst und Dateien mit der Endung .php5 durch PHP 5. Wenn du per Default alle Dateien durch PHP 5 parsen lassen möchtest, dann ändere die Zeilen entsprechend ab. </p>
<p>Danach suchst du nach der Stelle "ServerName localhost". Dort drunter findest du dann die Angabe für dein DocumentRoot, das du entsprechend anpassen kannst. Per Default wird hier "c:\wamp\Apache\htdocs\" stehen. Wenn du das DocumentRoot anpasst, musst du die Angabe "&lt;Directory "c:\wamp\Apache\htdocs\"&gt;" ein wenig weiter unten auch anpassen. Wichtig ist zudem, dass du unter "&lt;Directory "c:\wamp\Apache\htdocs\"&gt;" die Angabe von AllowOverride auf All setzt. Verkürzt sieht das dann so aus, wenn du dein DocumentRoot auf "e:" setzen möchtest:</p>
<div class="codebox">
DocumentRoot "e:/"</p>
<p>[...]</p>
<p>&lt;Directory "e:/"&gt;<br />
    [...]<br />
    AllowOverride All<br />
    [...]<br />
&lt;/Directory&gt;
</p></div>
<p>Alternativ kannst du in der "httpd.conf" nun noch andere Einstellungen mit das Laden und Aktivieren von Apache Modulen oder das Einrichten von Virtual Hosts vornehmen. </p>
<h3>PHP Konfigurieren</h3>
<p>Hier ist an dieser Stelle eigentlich nicht viel zu tun. Du kannst aber die "c:/wamp/php4/php.ini" und "c:/wamp/php5/php.ini" entsprechend deiner Bedürfnisse anpassen, Einstellungen vornehmen oder Extensions laden. </p>
<h3>Installation testen</h3>
<p>Lege in deinem DocumentRoot Verzeichnis die drei Dateien "phpinfo.php", "phpinfo.php4" und "phpinfo.php5" an, die alle folgenden Inhalt haben sollten:</p>
<div class="igBar"><span id="lphp-2"><a href="#" onclick="javascript:showCodeTxt('php-2'); return false;">Quellcode (klicken)</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-2">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span> </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <a href="http://www.php.net/phpinfo"><span style="color:#000066;">phpinfo</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Du rufst du im Browser nacheinander die folgenden Adressen auf:</p>
<ul>
<li><a href="http://localhost/phpinfo.php">http://localhost/phpinfo.php</a></li>
<li><a href="http://localhost/phpinfo.php4">http://localhost/phpinfo.php4</a></li>
<li><a href="http://localhost/phpinfo.php5">http://localhost/phpinfo.php5</a></li>
</ul>
<p>Bei den ersten beiden Aufrufen sollte nun die Infoseite von PHP 4 und beim letzten Aufruf die von PHP 5 erscheinen. </p>
<p>Wenn du nun aber in einem Verzeichnis alle .php Dateien mit PHP 5 parsen lassen möchtest, ohne dass du das global in der "httpd.conf" anpassen möchtest, musst du in dem entsprechenden Verzeichnis noch eine ".htaccess" Datei anlegen mit folgendem Inhalt:</p>
<div class="codebox">
AddType application/x-httpd-php5 .php
</div>
<p>Wenn du per Default alle .php Dateien mit PHP 5 parsen lässt und in einem Verzeichnis aber alle .php Dateien mit PHP 4 parsen lassen möchtest, musst du die .htaccess entsprechend anpassen.</p>
<div class="codebox">
AddType application/x-httpd-php4 .php
</div>
<h3>Das war es</h3>
<p>Ich hoffe, dass bei dir bis hierhin alles geklappt hat. Falls du Fehler findest oder Fragen hast, schreibe einfach in die Kommentare am Ende dieser Seite.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ralfeggert.de/2006/09/22/installation-php4-php5-windows-parallel/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Was ist eigentlich der Zend Framework Incubator?</title>
		<link>http://www.ralfeggert.de/2006/09/05/was-ist-eigentlich-der-zend-framework-incubator/</link>
		<comments>http://www.ralfeggert.de/2006/09/05/was-ist-eigentlich-der-zend-framework-incubator/#comments</comments>
		<pubDate>Tue, 05 Sep 2006 16:15:08 +0000</pubDate>
		<dc:creator>Ralf Eggert</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tipps und Tricks]]></category>

		<guid isPermaLink="false">http://www.ralfeggert.de/2006/09/05/was-ist-eigentlich-der-zend-framework-incubator/</guid>
		<description><![CDATA[Der Incubator (der Brutkasten) ist der Platz für neue Komponenten, die noch nicht zum Kern des Frameworks gehören. Jede Komponente muss über eine Dokumentation und ausreichend Unit Tests verfügen, damit sie überhaupt im Incubator aufgenommen wird und später daraus in den Kern übernommen werden kann. 
In den Incubator werden nur Komponenten aufgenommen, die mittelfristig auch [...]]]></description>
			<content:encoded><![CDATA[<p>Der <a href="http://framework.zend.com/fisheye/browse/Zend_Framework/trunk/incubator/library/Zend">Incubator</a> (der Brutkasten) ist der Platz für neue Komponenten, die noch nicht zum Kern des Frameworks gehören. Jede Komponente muss über eine Dokumentation und ausreichend Unit Tests verfügen, damit sie überhaupt im Incubator aufgenommen wird und später daraus in den Kern übernommen werden kann. </p>
<p>In den <strong>Incubator</strong> werden nur Komponenten aufgenommen, die mittelfristig auch in den Kern übernommen werden sollen. Andere Komponenten, für die es (vorerst) nicht geplant ist, sie in den Kern zu übernehmen, landen übrigens in dem sogenannten <strong>Laboratory</strong> (dem Labor). Gedacht ist dies für Komponenten, die voraussichtlich nicht von der Mehrheit der Anwender verwendet wird. Es ist aber durchaus möglich, dass eine Komponente auch aus dem Laboratory ihren Weg in den Incubator und somit später auch in den Zend Framework Kern findet.</p>
<p>Mittlerweile wurden einige interessante neue Komponenten in den Incubator aufgenommen. So gibt es eine Sammlung von Klassen zum Verarbeiten von Datumsangaben (Zend_Date), Währungen (Zend_Currency), Maßeinheiten (Zend_Measure) und für die Internationalisierung und Lokalisierung allgemein (Zend_Locale). Auch eine Klasse zum Lesen von Mails (Zend_Mail_Read) und für einen überarbeiteten Objektspeicher (Zend_Registry) werden derzeit im Incubator entwickelt. </p>
<p>Zudem gibt es noch diverse neue Komponenten im Zend_Service Bereich. Ebenfalls sehr interessant sieht die Zend_Db_Xml Komponente aus, die in einem <a href="http://devzone.zend.com/node/view/id/884">Tutorial in der Zend Developer Zone</a> vorgestellt wird. </p>
<p>Du solltest aber auf jeden Fall beachten, dass Komponenten im Incubator experimenteller Natur sind, d.h. es kann sein, dass sie fehlerhaft sind oder von einem auf den anderen Tag komplett umstrukturiert werden und sich somit die API stark verändert.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ralfeggert.de/2006/09/05/was-ist-eigentlich-der-zend-framework-incubator/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
