OPcache PHP Bootup Optimierung

Bei Webseiten, die beispielsweise auf WordPress, Joomla oder Laravel basieren und keinen userspezifischen Content haben, empfiehlt es sich, alle Seiten in einem statischen HTML-Cache vorzuhalten und den Cache nur bei Änderung im Backend manuell (oder automatisch) neu zu generieren. Beinhaltet die Seite jedoch dynamische Inhalte, die abhängig von Sessions und Cookies oder auch Sprache und Ort abhängen, eignet sich der Einsatz von OPcache.


Dabei liegt die sog. Boot Time bei allen drei genannten Systemen bei einem frisch aufgesetzten CentOS7-Server (mit SSD und PHP 7.1) bei über 100 ms. Jedes Mal, wenn ein PHP-Script ausgeführt wird, muss dieses zur Laufzeit in Bytecode kompiliert werden. OPcache realisiert nun einen Cache für diesen Bytecode – wird nun beim nächsten Request dasselbe PHP-Script ausgeführt, muss es nicht rekompiliert werden. Nach dem Aktivieren von OPcache setzen wir folgende Einstellungen:

9006cec6c5d3d2498ee26c5bfd91590a

Die Ausführungszeit (gemittelt bei 10 Ausführungen) hat sich nun deutlich reduziert:

  WordPress 4.7.4 Joomla 3.7 Laravel 5.4
ohne OPcache 295 ms 201 ms 110 ms
mit OPcache 54 ms 59 ms 13 ms
Faktor 5,5 3,5 8,5

Da wir bei den Einstellung validate_timestamps auf 0 gesetzt haben, wird der Cache nie automatisch neu aufgebaut (das machen wir bewusst manuell). Mit einem kleinen Git-Hook wird bei jedem "pull" ein PHP-Script ausgeführt. So aktiviert man den Hook:

a1678610c8b4c7db5997375944183830

a1678610c8b4c7db5997375944183830

Folgende Helferfunktion ist außerdem behilflich, um einzelne Code-Teile (oder die gesamte Ausführungszeit) zu messen:

085f4291bbcc4e8a64bbea951ff49ab9

Zurück