Unser Kerngeschäft ist, wie viele sicherlich wissen, die Arbeit mit Drupal. Da wir nun schon so einige Seiten umgesetzt haben, kommen wir immer mal wieder an den Punkt, über die Performance unserer Seiten genauer nachzudenken. Unter den vielen Ansätzen die man gehen kann, wie Caching oder das Aufräumen von Templates, haben wir auch darüber nachgedacht Drupal an sich zu verbessern. Eine Idee war dabei zu schauen, welche Drupal Funktionen sehr häufig aufgerufen werden und diese dann, anstatt sie in PHP zu schreiben, als eine eigene PHP Extension umzusetzen, die wiederum in C / C++ programmiert werden kann. Der Vorteil hier liegt klar auf der Hand. Anstatt viel PHP Quellcode zu nutzen, der wiederum erst noch verarbeitet werden muss von PHP, schreibt man seine Funktion in schnellem C / C++ Code, welcher dann zu einer Library kompiliert wird und von PHP als nativer Befehl genutzt werden kann.
Ich möchte darauf hinweisen, dass das hier kein Tutorial wird wie man eine Extension schreibt, sondern möchte einfach mal meine Erfahrung, Meinungen und Überlegungen zu diesem Thema zum besten geben.
Ich habe mich also mal 2 Tage damit beschäftigt, wie man eigene PHP Extensions schreiben kann. Meine Recherchen im Netz darüber haben mich schnell ernüchtert. Es gibt nur ein paar wenige Tutorials, von denen einige dann auch noch sehr alt sind. Ich habe ein Buch gefunden, veröffentlicht 2006. Quellen und Links findet ihr unten.
Was kann ich also sagen? Ich kann sagen, dass ich geteilter Meinung bin, was das Tunen des Drupal Cores mit Hilfe von eigenen PHP Extensions angeht. Ich glaube, dass es sich lohnen könnte einige Funktionen neu zu implementieren, aber dass es wie so oft im Leben doch mit einem erheblichen Aufwand verbunden ist.
Der erste Grund dafür ist, mal abgesehen davon, dass es kein Zuckerschlecken ist so eine Extension zu schreiben, dass ich mindestens genauso viele Probleme damit habe überhaupt eine Funktion zu finden die ich in einer Extension umsetzen kann. Warum ist das so schwer? Weil in vielen Funktionen im Drupal Core einfach wieder viele andere Funktionen benutzt werden. Das bedeutet, man müsste ja auch diese Funktionen in seiner Extension umsetzen und anpassen.
Ein weiterer Grund, den man nicht außer acht lassen sollte, ist der dass man die neu implementierten Funktion ja aus dem Drupal Core herausnehmen muss, da man ja nun die Funktion der Extension nutzen möchte. Das wiederum bringt dann das nächste Problem mit sich, Updates! Sobald man ein Update von Drupal machen möchte, müsste man wieder damit anfangen den Core zu patchen um das Nutzen der Extension zu ermöglichen - und wie ja jedes kleine Drupal Kind weiß: don't hack the Core :).
Wie geht es also weiter? Ein möglicher neuer Ansatz wäre der das so hoch gelobte HipHop zu testen. HipHop erzeugt aus PHP Code einen optimierten C++ Code, den man dann entsprechend kompilieren und zu einer ausführbaren Datei machen kann. Diese Datei beinhaltet dann wohl auch gleich einen Webserver, der benutzt wird um das Projekt im Web zugänglich zu machen.
Ich hoffe, ich konnte hier dem ein oder anderen einen kleinen Denkanstoß geben und hoffe, dass vielleicht eine kleine Diskussionsrunde dazu hier entsteht. Aus diesem Grund werde ich die Kommentarfunktion aktivieren und freue mich auf konstruktive Anmerkungen.
















