Archiv für die 'Tipps und Tricks' Kategorie

Eigenen Dojo Build für Zend_Dojo erstellen

Dienstag, 25.08.2009

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 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 Build-System, welches die Vielzahl von zu ladenden Dateien in einer Datei zusammen fügt und dann komprimiert. Dies beschleunigt den Seitenaufbau merklich.

Doch wie funktioniert dies nun mit der im Zend Framework enthaltenen Dojo Version. Als erstes musst du natürlich eine voll Zend Framework Version herunterladen (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:

cd /home/zf/ZendFramework-1.9.2/externals/dojo/util/buildscripts
./build.sh profileFile=profiles/standard.profile.js action=clean,release version=1.3.1 releaseName=

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 eigene Profildatei erstellen, wenn du ans Finetuning gehen möchtest. Wenn das Gerödel fertig ist, findest du dein Build 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.

Das Einbinden erfolgt dann wie gewohnt in einem Layout- oder View-Skript:

if ($this->dojo()->isEnabled())
{
$this->dojo()->setLocalPath('/js/dojo/dojo.js');
$this->dojo()->addStyleSheetModule('dijit.themes.tundra');
echo $this->dojo();
}

Wenn du nun deine Seite neu aufrufst und durch die Formulare klickst, sollten diese deutlich schneller aufgebaut werden.

Ausprobieren! Und bei Fragen, unten sind die Kommentare!

Zend Framework Performance optimieren

Dienstag, 04.11.2008

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 das Manual geplant.

Till Klampaeckel hat nun einen sehr lesenswerten Beitrag 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:

  • APC einsetzen
  • Konfigurationseinstellungen
  • Alle require_once Aufrufe durch den Autoloader von Zend_Loader ersetzen (bringt am meisten)
  • Zend_Loader aufbohren und optimieren
  • Datenbankergebnisse cachen
  • Metadaten Cache für Zend_Db_Table aktivieren
  • Apache Konfiguration anpassen

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.

Wie PHP 4 und PHP 5 parallel unter Windows installieren?

Freitag, 22.09.2006

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 Vorbereitung der Installation mußt du dir folgende Pakete auf deinem Rechner laden:

  • Apache Webserver: Je nachdem, welche Version du verwenden möchtest, suche nach dem Win32 Binary (MSI Installer), weil dieser sich am einfachsten installieren lässt
  • PHP 4 und PHP 5: Ich bevorzuge die Windows Binaries als Zip Package, weil sich die einfach entpacken lassen.
  • MySQL: 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.

Ich installiere das Wamp immer im Verzeichnis “c:\wamp”, also musst du das Verzeichnis bei dir auch noch anlegen, bevor es losgehen kann.

(weiterlesen…)

Was ist eigentlich der Zend Framework Incubator?

Dienstag, 05.09.2006

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 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 Laboratory (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.

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.

Zudem gibt es noch diverse neue Komponenten im Zend_Service Bereich. Ebenfalls sehr interessant sieht die Zend_Db_Xml Komponente aus, die in einem Tutorial in der Zend Developer Zone vorgestellt wird.

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.