Weekly Snap: OSDC 2012 from Start to Finish, with Zend JSON in Between

23 – 27 April was dedicated to the Open Source Data Center Conference with brief digression into Zend JSON context switches by the development team.
From the Puppet, OpenNebula and IPv6 workshops on the conference eve, to the engrossing presentations and evening event after, this year’s OSDC was a resounding success.
We hope you enjoyed the event as much as we did, and look forward to seeing you at the RootCamp in Berlin or Open Source Monitoring Conference later this year.

Zend JSON-Ausgabe

Um JSON mit dem Zend auszuliefern, könnte man auf die harte Tour, Header selbst setzen, Daten enkodieren und layouts deaktvieren oder man nutzt Funktionalitäten, die das Framework schon bietet. Um zum Beispiel JSON direkt zu senden, bedient man sich Zend_Controller_Action_Helper_Json:

class TestController extends Zend_Controller_Action
{
    public function indexAction()
    {
        $data = array(
            'test' => true
        );
        /**
         * Call Zend_Controller_Action_Helper_Json::direct
         */
        $this->_helper->json($data);
    }
}

Über die Url ../test erhalten wir die Ausgabe in JSON inklusive dem korrekten Content-type application/json.
Nachteil dieses Aufruf ist, dass die dispatch loop sofort unterbrochen wird und somit eventuelle Erweiterungen durch Plugins nicht mehr aufgerufen werden.
Besser ist es, den ContextSwitch Action-Helfer zu benutzen, welcher XML und JSON unterstützt, layouts deaktiviert und Header enstrechend setzt:

class TestController extends Zend_Controller_Action
{
    public function init()
    {
        $this->_helper
             ->contextSwitch()
             ->addActionContext('index', 'json')
             ->initContext();
    }
    public function indexAction()
    {
        $this->view->test = true;
    }
}

Die JSON-Ausgabe ist nun über die Url ../test?format=json erreichbar.
Um sich den format-Parameter zu sparen, kann man für alle actions im Controller das json-Format erzwingen:

public function init()
{
    /**
     * Force json format
     */
    $this->_request->setParam('format', 'json');
    ...
}

Zum weiterlesen: Zend ContextSwitch

Eric Lippmann
Eric Lippmann
Lead Senior Developer

Eric kam während seines ersten Lehrjahres zu NETWAYS und hat seine Ausbildung bereits 2011 sehr erfolgreich abgeschlossen. Seit Beginn arbeitet er in der Softwareentwicklung und dort an den unterschiedlichen NETWAYS Open Source Lösungen, insbesondere inGraph und im Icinga Team an Icinga Web. Darüber hinaus zeichnet er sich für viele Kundenentwicklungen in der Finanz- und Automobilbranche verantwortlich.

PHP – beschleunigt!

Wer kennt sie nicht – langsame PHP Seiten. Obwohl mittlerweile Speicher und Rechenleistung keine Rolle mehr spielen kommen manche PHP Applikationen nicht richtig in die Gänge.
Hier könnte der Zend Community Edition Server abhilfe schaffen. Ein kompilierter Apache mit einem Satz ausgewählter Module und ein aktuelles PHP5 bieten eine robuste Basis für die Auslieferung. Der Zend CE Server ist kostenfrei und kann auf der Herstellerseite von Zent heruntergeladen werden.
Im Hintergrund werkeln ein Apache2 für PHP und ein lighttpd für ein Admininterface welches komfortable Einstellungen in PHP erlaubt. Weiterhin ist der Zend Optimizer+ integriert, ein PHP Opcode- und Pagecacher welcher die Seite ziemlich fix generiert.
Auf Distributionen, welche keine aktuelle PHP Version bereitstellen, kann das Packet eine eigenständige Laufzeitumgebung für PHP Anwendungen bieten ohne sich zu tief ins System zu verwurzeln.
Die Installation geht schnell von statten. Man brauch nur den Installer Zend und schon gehts los:

root@rt:/usr/local/src# ls
ZendServer-5.0.3_Tarball_B3-php5.3.3-linux-glibc23-x86_64
ZendServer-CE-php-5.3.3-5.0.3-linux-glibc23-x86_64.tar.gz
root@rt:/usr/local/src# cd \
ZendServer-5.0.3_Tarball_B3-php5.3.3-linux-glibc23-x86_64/
root@rt:/usr/local/src/ZendServer-5.0.3_[...]# bash install.sh
Welcome to Zend Server installation script!
Please specify an installation path [/usr/local]:
[...]

Leider verursachen die Installierten neuen Bibliotheken Probleme, der Ursprungszustand ist schnell wiederhergestellt:

root@rt:~# rm -f /etc/ld.so.conf.d/zend_server.conf
root@rt:~# rm -f /usr/local/zend/lib/libcrypto.so.0.9.8
root@rt:~# /etc/init.d/ssh restart

Gesteuert werden die Dienste mit einem eigenen Script:

root@rt:~# /usr/local/zend/bin/zendctl.sh -h

Danach ist der Server einsatzbereit. Konfiguration und Wartung gestalten sich Apache üblich. Alle wichtigen Konfigurationen befinden sich unter /usr/local/zend (Standardinstallation).



Marius Hein
Marius Hein
Head of Development

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.