PHP – keine „Sprache für Visitenkarten-Websites“
\n\nLange Zeit gab es in der Entwickler-Community ein Stereotyp: PHP sei eine Sprache für einfache Blogs, Online-Shops und „Websites auf die Schnelle“. Die Realität ist, wie so oft, komplexer und interessanter. Heute arbeitet PHP im Kern von Giganten wie Facebook (jetzt Meta), Wikipedia (der größte enzyklopädische Ressource der Welt), Mail.ru und Etsy. Darüber hinaus verwenden 77% aller Websites, deren Programmiersprache bekannt ist, PHP (Daten von W3Techs für 2024).
\n\nIn diesem Artikel analysieren wir reale Fallstudien von Unternehmen, die PHP nicht nur einsetzen, sondern es auf Millionen von Anfragen pro Sekunde skalieren. Sie werden sehen, wie echter Code aussieht, welche Architekturlösungen getroffen wurden und welche Lehren Sie für Ihre eigenen Projekte ziehen können.
\n\nFallstudie Nr. 1: Facebook und HHVM – als PHP sich selbst „überwachsen“ hat
\n\nProblem: Traditionelles PHP kam mit der Last nicht zurecht
\n\nIm Jahr 2010 stand Facebook vor dem klassischen Wachstumsproblem: Die Nutzerzahl überstieg 500 Millionen, und die Anzahl der PHP-Anfragen pro Seite belief sich auf Hunderte. Der Standard-PHP-Interpreter (Zend Engine) verbrauchte zu viel Speicher und Rechenleistung. Jede Anfrage wurde von Grund auf neu verarbeitet – Kompilierung, Ausführung, Kontextvernichtung.
\n\nDie Ingenieure von Facebook gingen einen unkonventionellen Weg: Sie entwickelten HipHop for PHP und später HHVM (HipHop Virtual Machine). Dies ist nicht nur eine Optimierung, sondern eine vollwertige JIT-Kompilierung von PHP in Maschinencode.
\n\nArchitekturlösung: JIT-Kompilierung und Hack-Sprache
\n\nSo sieht ein typischer Codeabschnitt aus, der von HHVM verarbeitet wird:
\n\n<?php\n\n// Beispiel aus echtem Facebook-Code (angepasst)\nclass FeedManager {\n private Redis $cache;\n private Database $db;\n \n public function getUserFeed(int $userId, int $limit = 20): array {\n // Versuch, aus dem Cache zu holen\n $cacheKey = "feed:user:{$userId}";\n $cached = $this->cache->get($cacheKey);\n \n if ($cached !== null) {\n return json_decode($cached, true);\n }\n \n // Feed-Generierung mit Paginierung\n $feed = $this->db->query(\n "SELECT * FROM posts WHERE author_id IN (\n SELECT friend_id FROM friendships WHERE user_id = ?\n ) ORDER BY created_at DESC LIMIT ?",\n [$userId, $limit]\n )->fetchAll();\n \n // Für 5 Minuten cachen\n $this->cache->set($cacheKey, json_encode($feed), 300);\n \n return $feed;\n }\n}\n\n\nWesentliche Merkmale:
\n- \n
- Typisierung – HHVM unterstützt strenge Typisierung (int, string, array), was die Anzahl der Fehler um 40% reduziert. \n
- Asynchronität – HHVM kann mit async/await arbeiten, was für die Verarbeitung tausender paralleler Anfragen entscheidend ist. \n
- Profiling – Jede Anfrage wird protokolliert und auf Engpässe analysiert. \n
Ergebnis
\nDie Leistung stieg im Vergleich zu Standard-PHP um das 5- bis 6-Fache. Der Energieverbrauch der Server sank um 50%. Heute verwendet Meta HHVM für die Verarbeitung von Milliarden von Anfragen täglich.
\n\nFallstudie Nr. 2: Wikipedia – PHP ohne Frameworks, aber mit intelligenter Architektur
\n\nProblem: Wie unterstützt man 300+ Sprachen und 50 Millionen Artikel?
\n\nWikipedia (die MediaWiki-Engine) ist eines der ältesten PHP-Projekte. Die Codebasis umfasst über 2 Millionen Zeilen PHP. Interessanterweise haben sie bewusst auf beliebte Frameworks (Laravel, Symfony) verzichtet und stattdessen eine eigene Lösung entwickelt.
\n\nArchitekturlösung: Modularität und Caching
\n\nSo sieht ein typischer Seiten-Handler in MediaWiki aus:
\n\n<?php\n\n// Vereinfachtes Beispiel aus dem MediaWiki-Kern\nclass ArticlePageHandler {\n \n public function render(string $title): string {\n