RoadSend PHP

Opis niezależnej implementacji PHP umożliwiającej kompilację PHP do kodu maszynowego.

RoadSend PHP to niezależna implementacja języka PHP zawierające interpreter, kompilator i debuger. Unikalną zaletą tej implementacji jest możliwość skompilowania skryptu PHP do kodu maszynowego na danej platformie (obsługuje MS Windows, Mac OS X, Linuksa i FreeBSD) i uruchamianie takiego kompilatu poprzez FastCGI. Skompilowany skrypt powinien być znacząco wydajniejszy od wykonania skryptu PHP za pomocą standardowej implementacji, jednakże RoadSend PHP nie oferuje obecnie obsługi wszystkich rozszerzeń jakie znajdziemy w PHP 5.2.X. Twórcy jako przykłady możliwości swojego dzieła podają phpBB czy phpMyAdmin, które można udanie skompilować za pomocą RoadSend.

Obecna stabilna wersja to 2.9.8 i gałąź ta nie jest już aktywnie rozwijana. Trwają prace nad nową gałęzią implementującą RoadSend PHP w LLVM i C++, a nie w C/Scheme jak obecna gałąź.

Kompilacja kodu PHP

Skrypt PHP kompilujemy wydając w konsoli polecenie:
pcc -v -O --fastcgi NAZWA_PAKIETU PLIK.php
Czy też dla skryptu złożonego z wielu plików możemy użyć:
pcc -v -O --fastcgi NAZWA_PAKIETU `find ./ -name '*.php' -or -name '*.inc'`
Udana kompilacja stworzy plik NAZWA_PAKIETU.fcgi oraz "libNAZWA_PAKIETU*.so" (dll pod MS Windows), które należy skopiować do katalogu na skrypty cgi/fcgi, zazwyczaj cgi-bin.

Uruchamianie kompilatu na serwerze Apache

Do uruchomienia kompilatu można użyć serwera Apache z modułem mod_fastcgi (lub ewentualnie mod_fcgid). Do konfiguracji apache dodajemy taki wpis:
<Directory /ścieżka/do/katalogu/>
             RewriteEngine On
             RewriteRule ^(.+\.php)$ /cgi-bin/NAZWA_PAKIETU.fcgi/$1 
	     RewriteRule ^$ /cgi-bin/NAZWA_PAKIETU.fcgi/index.php 
</Directory>
Gdzie /ścieżka/do/katalogu/ to ścieżka do katalogu (URLa) na serwerze, pod którym podpięty zostanie skrypt FastCGI (http://localhost/ścieżka/do/katalogu/). Po uruchomieniu/zrestartowaniu serwera pod podaną ścieżką powinien działać nasz kompilat poprzez FastCGI. Tak wygląda phpinfo wygenerowane przez kompilat Roadsenda:
roadsend


Dokumentacja Roadsend
Kompilacja phpBB - tutorial i forum projektu
Trac wersji rozwojowej RoadSend
blog comments powered by Disqus

Kategorie

Strony