Vorteile:
- Performance
Ich habe gelesen (finde die Quelle leider nicht), dass es rein Performance-mäßig so viel nicht bringen würde - gegenüber mod_php/fcgi + opcode cache.
Hmm, vom rein theoretischen Standpunkt aus, müsste es schon was bringen, denn das Interpretieren benötigt ja auch eine gewisse Zeit.
Aber kann schon sein, das es soo viel nicht bringt.
- Modularisierung (eben auf der Entwicklerebene)
Aber stell Dir mal vor, Du hättest gerade mit PHP angefangen, und müsstest das dann erst mal kompilieren, evtl. sogar noch mit verschiedenen Flags... Außerdem wird die Entwicklung so langsamer, möglicherweise auch qualitativ schlechter weil man nicht mehr so schnell die Ergebnisse kontrollieren kann, Tests laufen lassen kann...
Naja, idealweise würde der Server ja selbst erkennen, ob das Script bereits kompiliert wurde oder nicht. Durch irgendein Schlüsselwort könnte man dem Server sagen, stop, hier gibts nichts mehr zu inpretieren. Und für den PHP-Einsteiger würde sich damit nichts ändern.
- Portabilität
Du bekommst aber Probleme, dass Deine schön kompilierten Scripte auf einmal nicht mehr überall laufen. Möglicherweise schon nicht auf unterschiedlichen Unix/Linux-Versionen, aber in jedem Fall nicht gleichzeitig unter Windows und Linux. Und schon gar nicht auf unterschiedlichen Rechner-Architekturen! Oder weißt Du ob Provider XY Solaris, Linux, FreeBSD... als Betriebssystem einsetzt, und das auf einer sparc-, x86-, amd64-... Architektur?
Kommt ganz drauf an, wie sowas realisiert würde. Ich denke da nur an die Java-VM. Wenn man eine Art Sandbox für kompilierten PHP Code basteln würde...
Nachteile:
mit fallen keine ein,
mir schon ;-)
Neben den oben genannten, ich weiß auch nicht ob das ganze Sicherheitstechnisch problematisch ist, denn wer sagt dass die Executables alle "sauber" sind?
Naja, sie werden genauso sauber oder unsauber sein, wie der Quelltext auch.
außer das es das eben noch nicht gibt.
doch, das gibts: http://www.roadsend.com/home/index.php?SMC=1&pageID=compiler
Interessant.
Ansatzweise wurde das schon von Zend mit dem encoder realisiert - aber eben nur ansatzweise.
Das ist ganz was anderes. Hiermit kannst Du nur Deine Scripte in ein sehr schwer zu entzifferndes Format übersetzen, was dann Dank eines Zend-Moduls vom Interpreter zur Laufzeit in PHP-Opcode umgewandelt werden kann. Somit kann niemand so ohne weiteres den Quellcode der Scripte lesen, auch wenn er die funktionierenden PHP-Dateien öffnen/lesen kann.
Dann hatte ich das bisher falsch verstanden. Dachte die Scripte würden 'vorkompiliert', daher auch der von Zend angebene Performancevorteil. Aber nur um Scripte gegen Einsicht zu schützen, ist das natürlich Unfug - IMHO
Gruß
Mark