GENTICS News
Funktioniert PHP mit Gentics® Portal.Node®?
Die Verwendung von Apache in Zusammenhang mit tomcat, mod_jk und Gentics® Portal.Node® führt dazu dass der Apache mit dem Worker Modell betrieben wird. Mod_php ist daher nicht mehr einsetzbar.
Ist PHP notwendig?
Es gilt in jedem Fall zu überlegen in wie weit PHP auf einem JavaApplicationserver eingesetzt werden sollte. Jede Komponente stellt ein
weiteres Sciherheitsrisiko dar. Auf diesem Server könnten JSPs die
ähnlich flexibel sind wie PHP eingesetzt werden. Evt. könnte PHP auf
einen weiteren System zu Verfügung stehen und verlinkt werden (Inhalte
und Design kann ja über das Gentics® Content.Node® komfortabel verteilt werden). Evt. kann auch ein clipping Portlet verwendet werden (» portletbridge.org).
Erklärung des Grundes
Der Apache verfügt über mehrere Methoden (apache2-mpm-prefork, apache2-mpm-worker,..) Anfragen zu beantworten. Die Methoden unterschieden sich in der Art und wie sie Anfragen beantworten (Socketshandling, filehandling, threadhandling, childprocess handling,...). Jede Methode hat in einer bestimmten Umgebung vor und Nachteile und hängt auch sehr stark von der verwendeten Plattform ab. Da bei einem Portalserver der Apache in erster Linie als HTTP Server fungiert und die Requests handled und dann "nur" an den Applikationserver weiterreicht ist das apache2-mpm-worker Modell für *unix Plattformen gut geeignet. Daraus ergeben sich aber Einschränkungen für PHP: Das Apache Modul von PHP ist nicht threadsafe und kann somit nicht mit dem apache2-mpm-worker benutzt werden, sondern nur mit dem apache2-mpm-prefork. In diesem Fall müsste man zu PHP-CGI greifen, das aber nicht die selbe Performance liefert wie PHP direkt als Modul im Apache. PHP wird bei jedem Aufruf neu gestartet und in den Speicher geladen. Ab PHP5, wo das binary schon sehr groß ist scheint dies nicht mehr gut möglich.Lösung
Eine Lösung zu diesen Problemen kann mit mod_fastcgi realisiert werden. Hierbei werden CGI Prozesse threadsafe gestartet und verwaltet. Die Performance von PHP ist dann mit jener als Module im Apache vergleichbar.Eine Anleitung wie dies mit der Linux Distribution Debian realisiert werden kann ist » hier verfügbar. Die Prinzipien gelten aber für alle Linux Distributionen.