Skip to content

Repository files navigation

PHP Precompiler/Caching

Das Projekt „PHP Precompiler/Caching“ untersucht effiziente Möglichkeiten zur Verwaltung, Optimierung und Bereitstellung von PHP-Dateien mit verbesserter Leistung. Das Projekt zielt zwar nicht darauf ab, den Markt zu revolutionieren, konzentriert sich jedoch auf das Experimentieren mit praktischen Techniken wie Vorkompilierung, intelligentem Caching und minimalem Laufzeitaufwand. Sein vorrangiges Ziel ist es, als Testumgebung für die persönliche Weiterentwicklung zu dienen und ein besseres Verständnis dafür zu gewinnen, wie die PHP-Leistung in kontrollierten Umgebungen verbessert werden kann.

Im Laufe der Zeit kann sich das Projekt weiterentwickeln, je nachdem, welche Erkenntnisse gewonnen werden und welche Herausforderungen sich ergeben.

Stand

Das Konzept ist in docs/CONCEPT.md festgehalten — inklusive der Begründung, warum reines Zusammenführen von Dateien in einer Welt mit OPcache kaum etwas bringt, und wo der Hebel stattdessen liegt.

Die Analyse arbeitet über den PHP-Tokenizer statt über reguläre Ausdrücke und kommt ohne externe Abhängigkeiten aus. Eingebettet wird nur, was nachweislich semantik-erhaltend ist; alles andere bleibt unangetastet.

php bin/phppc analyze index.php    # Include-Graph und Sicherheitsbewertung
php bin/phppc compile index.php    # Kompilieren (Ausgabe nach stdout)
php tests/run.php                  # Testsuite

Der Analyse-Befehl begründet für jedes Include einzeln, warum es eingebettet werden darf oder eben nicht — zum Beispiel „Zieldatei enthält ein return auf oberster Ebene" oder „Include steht in einem bedingten Kontext".

__DIR__, __FILE__ und __LINE__ werden vor der Analyse zu Literalen aufgelöst, statt eine Einbettung zu verhindern. Das Kompilat ist dadurch an seinen Entstehungsort gebunden; Compiler::withoutMagicConstantResolution() schaltet das ab.

Geplant

Eine kurze Auflistung der für dieses Projekt geplanten Funktionen und ihrer möglichen Verwendung.

  • Es sollte möglich sein, über die Befehlszeile mit einem Befehl wie „phppc compile“ einsatzbereite PHP-Dateien zu generieren.

  • Das Programm sollte diese Dateien bei Bedarf automatisch generieren (z. B. wenn ein Benutzer dies durch den Aufruf der Seite „xyz“ auslöst).

  • Das Programm sollte ressourcenschonend und benutzerfreundlich sein. Um das Caching auf Abruf zu aktivieren, fügt man einfach

    require_once("[project_dir]/php_precompiler/auto_cache.php");

irgendwo am Anfang des Projekts ein, und es erledigt seine Aufgabe automatisch ohne weitere Konfiguration (!!! höchst unwahrscheinlich !!!).

Dieses Projekt wird im Wesentlichen eine primitivere Form des Cachings sein (glaube ich), sodass es seinen „Konkurrenten“ unterlegen sein wird.

Version 2

Könnte eine robustere, in C/C++ programmierte Software sein und einige Verbesserungen gegenüber der PHP-Version bieten.

About

The "PHP Precompiler/Caching" project explores efficient ways to manage, optimize, and serve PHP files with improved performance.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages