Linux E X P R E S

Facebook

HHVM: co to je, proč používat, jak na to

hhvm_logo.png

Technologii PHP zná téměř každý, kdo někdy nějak „víc zavadil“ o web. Protože na tom ale PHP není moc dobře s rychlostí, vytvořila si firma Facebook rychlejší modifikaci: HHVM. Podívejme se na tuto technologii blíže.


PHP – pomalost a akcelerátory

Technologie PHP vznikla pro webové skriptování a tomu odpovídal i způsob práce. Skripty se při každém požadavku načítaly a interpretovaly. Nejmarkantnější to samozřejmě bylo, dokud by interpret PHP jako úplně samostatný program, který bylo potřeba při každém požadavku spustit. Použití modulu do webového serveru Apache, stejně jako řešení typu PHP-FPM odbourává spouštění, interpretace kódu ale zůstává.

Protože pomalost samozřejmě vadila, vznikly různé tzv. akcelerátory. Ty fungují tak, že při prvním požadavku na skript tento zpracují, zkompilují do mezijazyka (bytecode, bajtkód), ten případně dále optimalizují a kromě spuštění ho také uloží k dalšímu použití (do paměti nebo na disk). Při dalším požadavku zkontrolují, zda se skript změnil – pokud ano, zpracují ho znovu, jinak použijí zkompilovanou podobu (odbavení takového požadavku už je podstatně rychlejší než u toho prvního).

Mezi známé akcelerátory patří například eAccelerator nebo Alternative PHP Cache (APC). Dříve se používaly poměrně hojně, později byl jeden z dalších známých akcelerátorů – původně nazvaný Zend Optimizer+ – začleněn pod názvem Zend Opcachepřímo do PHP (od verze 5.5).

Cesta Facebooku

Pro sociální síť Facebook se kdysi používal již zmíněný akcelerátor APC a vývojáři Facebooku dokonce přispívali do jeho kódu. Pořád to ale výkonově nestačilo, proto vznikl HipHop for PHP (HPHPc). To byl překladač („transpilátor“) zdrojového kódu z jazyka PHP do C++, který se následně kompiloval běžným kompilátorem C++.

První HPHPc verze přišla v roce 2010 (kód byl poskytnut veřejně pod PHP License), vývojáři k němu vytvořili i interpret (HPHPi) a debugger (HPHPd), které umožňovaly snadné ladění kódu skriptů. Již o tři roky později však byl vývoj ukončen. Nevýhodou HPHPc bylo především to, že nepodporoval celou šíři platformy PHP, navíc kompilace celé aplikace mohla trvat dlouho a vyžadovat mnoho paměti.

Za ukončením vývoje stálo i to, že mezitím začala vznikat technologie HipHop Virtual Machine (HHVM). Jak název napovídá, je to virtuální stroj. Svým charakterem hodně připomíná například virtuální stroj jazyka Java. První verze spatřila světlo světa v roce 2011, aktuálně je tu verze 3.9 a stále běží aktivní vývoj.

Co umí HHVM

Prvním krokem je kompilace zdrojového kódu PHP (nebo také jazyka Hack, který je od PHP odvozen) do bytecode (HHBC). Ten se pak před spuštěním překládá do strojového kódu a optimalizuje. Výsledkem je rychlejší běh jak oproti přímé interpretaci, tak oproti interpretaci bytecode. Na druhou stranu je potřeba podstatně více paměti, s čímž je nutno počítat.

HHVM podporuje prakticky kompletní platformu PHP, takže aplikace pro jeho použití nevyžadují žádné významnější změny, pokud vůbec nějaké. Vývojáři průběžně testují kompatibilitu populárních frameworků pro PHP a lze se tedy podívat, jak si který stojí.

Zajímavostí je, že na HHVM dnes běží encyklopedie Wikipedia a příslušný software MediaWiki je s HHVM plně kompatibilní.

Kde získat a jak nainstalovat HHVM

Máte-li zájem si HHVM vyzkoušet nebo si na něm spustit i ostrou aplikaci, máte tři možnosti. První  z nich je instalace hotových balíčků. Jsou přímo k dispozici pro linuxové distribuce Ubuntu (aktuálně pro verzi 14.04 a novější; LTS verze 10.04 a 12.04 jsou také podporovány, ale nejsou pro ně nové verze HHVM, totéž se týká i distribuce Linux Mint 16) a Debian (7 a 8). Protože je k dispozici repozitář balíčků, lze je snadno udržovat aktualizované.

Druhou možností je využít řešení PuPHPet. To umožňuje vytvořit se virtuální stroj pro provoz webového serveru a jednou z možností je právě i použití HHVM. Pro vyzkoušení je to určitě nejsnazší možnost, všechno se dá snadno „naklikat“. Jako poslední možnost zbývá samozřejmě kompilace ze zdrojových kódů (které jsou k dispozici pod PHP License a Zend License).

Co se týká konfigurace, zatím nejsou k dispozici všechny konfigurační volby v souboru php.ini, které jsou zmíněny v dokumentaci. Měly by ale postupně přibývat. HHVM má naopak své vlastní konfigurační parametry v souboru server.ini. Balíčky jsou připravené pro běh s webovými servery Apache a nginx.

Standardní rozšíření obsažená v PHP jsou v HHVM k dispozici (v rozsahu popsaném v dokumentaci). Pokud si chce přidávat svá vlastní rozšíření, možnost tu je.

Závěr

HHVM je zajímavou alternativou klasického PHP. Nabízí vyšší rychlost, ale současně požaduje více paměti. Je samozřejmě potřeba brát v úvahu, že ho Facebook vyvíjí v první řadě pro sebe, takže přestože ho poskytuje veřejně pod otevřenými licencemi, nemusí příliš reflektovat požadavky jiných uživatelů. Je také možné, že bude dříve či později nahrazen nějakou lepší technologií a jeho vývoj bude ukončen, jako se to stalo třeba u HPHPc.

Diskuze (1) Nahoru