Bezplatné kompilátory PHP. Kedy zvážiť kompiláciu

Takmer všetci vývojári skôr či neskôr čelia potrebe spustiť alebo rýchlo skontrolovať nejaký kód, ale nie každý vie, že na takú jednoduchú úlohu nie je vôbec potrebné spúšťať ťažké desktopové IDE alebo kompilátory aplikácií. Stačí použiť online nástroje, ktoré vám umožnia robiť všetko oveľa rýchlejšie: Ctrl + C, Ctrl + V, Run, whoop - a výstup programu už máte pred vašimi červenými očami.

Vybrali sme tie najlepšie online kompilátory: niektoré z nich sú celkom univerzálne, iné sú prispôsobené presne definovaným úlohám. V každom prípade nebudú nadbytočné.

kódovanie

Koding.com nie je online kompilátor v obvyklom zmysle. Každý používateľ služby si môže v cloude vytvoriť niekoľko plnohodnotných virtuálnych strojov so systémom Ubuntu 14.04, na ktorých si môže robiť, čo chce, vrátane zostavovania kódu. V predvolenom nastavení sú podporované všetky populárne jazyky, ale môžete si jednoducho pridať svoj vlastný.

Okrem ovládacieho panela pre váš server je v rozhraní k dispozícii pohodlné IDE a okno terminálu. Kódovanie je najuniverzálnejší nástroj, ďalej sa pozrieme na jednoduchšie a špecializovanejšie možnosti.

IdeOne

IdeOne je online kompilátor a nástroj na ladenie, ktorý vám umožňuje spúšťať kód vo viac ako 60 programovacích jazykoch a ich špecifických verziách priamo v prehliadači.

Pre tých, ktorí nemajú priateľku, tvorcovia poskytli kompiláciu kódu v jazyku Brainfuck.

JDoodle

Ďalší online kompilátor, ktorý podporuje mnoho jazykov, vrátane niektorých, ktoré nenájdete v mnohých iných online kompilátoroch. Príjemnou vlastnosťou JDoodle je schopnosť spolupracovať – stačí poslať odkaz na vašu aktuálnu reláciu a splodiť chyby dvojnásobnou rýchlosťou!

jsFiddle

Nenechajte sa zmiasť názvom – jsFiddle nie je len pre JavaScript. Tento front-end online editor vám umožňuje kontrolovať akúkoľvek kombináciu JavaScriptu, HTML a CSS. Samozrejmosťou je podpora rôznych frameworkov, ako sú jQuery, Vue, React, TypeScript, ale aj CSS preprocesory ako SCSS. Pre pohodlie si môžete vybrať klávesnicu z vášho obľúbeného editora. Pravda, iba ak je váš obľúbený editor Vim, Emacs alebo Sublime Text.

kódový blok

CodePad je minimalistická služba, kde môžete ukladať kód, zdieľať ho a spúšťať s následným výstupom výsledkov jeho vykonania. Na výber je niekoľko najbežnejších jazykov, no, žiaľ, bez výberu konkrétnych verzií tlmočníkov alebo kompilátorov.

Jeho hlavnou výhodou je jednoduchosť a jednoduchosť: stránka bude fungovať rýchlo aj pri pomalom internete. Poskytuje sa automatické pripojenie štandardných hlavičiek, ako aj integrácia s Vim alebo Emacs.

Z mínusov možno menovať úplný nedostatok zvýraznenia syntaxe pri zadávaní kódu do formulára. Pri prezeraní už uloženého záznamu je však podsvietenie prítomné.

GCC Boh Bolt

GCC GodBolt je interaktívny kompilátor jazyka C++. K tejto kolekcii som sa dostal z dôvodu, že má jednoduché rozhranie, ako aj veľké množstvo nastavení vrátane možností nastaviteľných kláves.

Na výber je veľa verzií kompilátora, vrátane tých najnovších. Zo zaujímavých funkcií si možno všimnúť okamžitý preklad programového kódu do jazyka symbolických inštancií.

PHP je interpretovaný programovací jazyk, pričom každá požiadavka analyzuje a „vykonáva“ zdrojový kód. Tento prístup je, samozrejme, veľmi pohodlný vo fáze vývoja projektu, ale predstavuje ďalší krok do procesu vykonávania produkčného kódu. Interpretácia, na prvý pohľad silná stránka PHP, teda stojí CPU a zdroje navyše.

Nižšie si povieme niečo o kompilátoroch, ktoré vám umožňujú kompilovať php kód do C++ a jeho do spustiteľného súboru. Aplikácie PHP sú teda vykonávané priamo procesorom, pričom sa obchádza interpret.

Overme si, či je v praxi všetko také dobré.

Ako funguje tlmočník

Interpretácia kódu PHP prebieha v dvoch fázach:

  1. Parsovanie kódu a generovanie operačných kódov (Zend opcodes) – inštrukcie zrozumiteľné pre interpreta.
  2. Vykonávanie operačných kódov.

Zatiaľ čo prvá fáza je vhodná na optimalizáciu (pomocou vyrovnávacej pamäte operačných kódov), druhá je skôr uzavretá – interpret je vždy prostredníkom medzi inštrukčnou sadou a procesorom, ktorý ich vykonáva. Bez tlmočníka nemôže procesor prísť na to, čo robiť s operačnými kódmi.

Aby sa zbavili prepojenia na interpreta, boli vynájdené kompilátory, z ktorých najpopulárnejší a najnovší je HipHop z Facebooku. Precíťme to bližšie.

hiphop php

HipHop je napísaný vývojármi Facebooku a je to aplikácia, ktorá:
  1. optimalizuje PHP kód
  2. konvertuje do c++
  3. vygeneruje z vašej aplikácie viacvláknový webový server, ktorý ju vykonáva
  4. skompiluje do spustiteľného kódu pomocou g++

Teda na vstupe je PHP kód, na výstupe je server, ktorého súčasťou je napísaná funkcionalita.

Pozrime sa, ako si HipHop poradí s kompiláciou aplikácie napísanej pomocou frameworku ako Wordpress.

Kompilácia Wordpressu

Po nainštalovaní HipHop do priečinka src/hphp/ dostaneme súbor hphp, ktorý je kompilátorom. Pred kompiláciou nastavte premenné prostredia:

Cd .. # prejdite do priečinka hiphop export HPHP_HOME=`pwd` export HPHP_LIB=`pwd`/bin export CMAKE_PREFIX_PATH=`/bin/pwd`/../

a choď!

Stiahnite si Wordpress a rozbaľte archív:

Wget http://wordpress.org/latest.tar.gz tar zxvf recent.tar.gz

Skopírujte súbor wp-config-sample.php do súboru wp-config.php a zadajte nastavenia pripojenia k databáze (v nastaveniach hostiteľa zadajte 127.0.0.1, nie localhost).

Pre úspešnú kompiláciu musíte Wordpress trochu opraviť:

  1. Otvorte wp-includes/js/tinymce/plugins/spellchecker/classes/SpellChecker.php a nahraďte: funkciu &loopback(/* args.. */) ( return func_get_args(); ) funkciou &loopback(/* args.. */ ) ( $ret = func_get_args(); return $ret; )
  2. V súbore wp-includes/query.php namiesto if (!isset($q["suppress_filters"])) $q["suppress_filters"] = false; vložiť $q["suppress_filters"] = true;

Wordpress je pripravený.

Hiphop"musíte zadať zoznam súborov, ktoré budeme kompilovať - ​​získame ho a uložíme do súboru files.list:

Nájsť. -name "*.php" > files.list

Všetko je pripravené na kompiláciu, začnime:

$HPHP_HOME/src/hphp/hphp --input-list=files.list -k 1 --log=3 --force=1 --cluster-count=50

Po dokončení príkazu v dočasnom priečinku (na začiatku kompilácie hphp ukáže svoju cestu, niečo ako "/tmp/hphp_ptRgV1") dostaneme skompilovaný webový server. Spustite to (ak niečo visí na porte 80, napríklad apache alebo nginx, musíte to najskôr zastaviť, aby ste uvoľnili port):

sudo /tmp/hphp_6s0pzd/program -m server -v "Server.SourceRoot=`pwd`" -v "Server.DefaultDocument=index.php" -c $HPHP_HOME/bin/mime.hdf

Voila! Ak prejdete na http://localost, zobrazí sa funkčný blog Wordpress.

Výkon

Uvidíme, či dôjde k zvýšeniu výkonu v porovnaní s nekompilovanou verziou WordPress bežiacou na apache2. Nižšie je uvedený graf závislosti rýchlosti generovania stránky od počtu paralelných používateľov.

Ako vidíte, výsledky sú šokujúce: zostavený blog funguje v priemere 6-krát rýchlejšie! Priemerný počet žiadostí spracovaných za sekundu v nekompilovanom je 9 a v skompilovanom je 50! Neviem ako vy, ale mňa tieto výsledky ohromili, nečakal som taký výrazný nárast výkonu.

Zhrnúť

Po takýchto ohromujúcich výsledkoch možno povedať len jedno – chalani z Facebooku odviedli skvelú prácu. Kompilátor robí z aplikácie naozaj raketu a hoci je potrebné aplikáciu pred kompiláciou pripraviť, výsledok stojí za to.

K veci:

Ak sa vám príspevok páčil - kliknite na Google +1 - budem viac motivovaný písať viac a len pekne.

Všetko bezplatné kompilátory PHP, ktoré je tu prezentované, dokáže prekompilovať PHP skripty do strojového kódu, ktorý môže bežať na počítači bez sťahovania špeciálneho PHP interpreta, alebo ich skompilovať do rozhrania príkazového riadka s bajtovým kódom (na inštaláciu je potrebný NET alebo Mono framework alebo bajtový kód Java virtuálny prístroj Java na inštaláciu)).

Takéto kompilátory môžu byť užitočné na rôzne účely: môžu urýchliť spustenie vášho skriptu, pretože sa už neinterpretujú za behu; alebo vďaka nim môžete distribuovať svoje aplikácie bez prezradenia zdrojového kódu (čo iné komerčné skripty vyžadujú). Predpokladám, že sú vhodné aj v prípade, keď chceme písať programy PHP závislé od internetu a distribuovať ich s funkciou spúšťania na ploche (na rozdiel od bežných webových aplikácií, ktoré bežia na serveri), je to všetko možné, pretože PHP je jednoduché -to-learn programovací jazyk a v podstate obsahuje veľa vstavaných funkcií s prístupom na internet. (V tomto prípade budete musieť distribuovať aplikácie pomocou vstavaného webového servera alebo použiť kompilátor, ktorý skompiluje server do vašej aplikácie.)

Mimochodom, ak chcete vo svojom kóde použiť zmätok, mali by ste vedieť, že je to možné aj pomocou PHP akcelerátor. Tieto urýchľovače majú tiež urýchliť vykonávanie skriptu.

Užitočné informácie pre tých, ktorí ešte nevedia, že oficiálnu verziu PHP prekladača si možno stiahnuť z PHP stránky: Hypertextový procesor.

Bezplatné kompilátory PHP na písanie natívneho kódu, skriptov .NET alebo Java bytecode.

Bambalam (nový)

Tento program produkuje nezávislé Windows aplikácie EXE pre váš zdrojový kód PHP. Nie je to presne kompilátor pre natívny kód, pretože len kóduje zdroj a vkladá PHP interpreter, ale tento program je určite pre ľudí, ktorí hľadajú kompilátory pre natívny a bajtový kód. V čase, keď bol celý program napísaný, jeho vykonávacie prostredie bola vstavaná verzia PHP 4.4.4 (program nebol aktualizovaný od roku 2006). Zdrojový kód pre Bambalam je vo verejnej doméne.

Phalanger (pre .NET)

Phalanger skompiluje váš PHP kód do CLI bytecode (.exe alebo .dll). Tento program je možné spustiť cez rámce .NET 4.0 alebo Mono. Váš PHP kód môže používať akékoľvek .NET objekty a ďalšie knižnice štandardu PHP rozšírenia. Výsledná zostava NET môže byť podpísaná alebo skrytá. Tento program tiež vydáva šablóny, ktoré vám umožňujú vytvárať aplikácie PHP pomocou Visual Studio. Program je vydaný pod licenciou Apache.

HipHop pre PHP (pre natívny kód)

HipHop preloží váš PHP kód do kódu C++, ktorý sa neskôr skompiluje pomocou kompilátora GNU C++, do spustiteľného binárneho kódu. Kompilátor podporuje všetky funkcie PHP 5.3 (samozrejme okrem takých vecí ako eval()). Funguje a kompiluje kód pre 64-bitový Linux a FreeBSD. Keďže program je distribuovaný vo forme zdrojového kódu, budete ho musieť skompilovať ručne (sami). Je vydaný pod licenciou PHP.

Roadsend PHP (pre natívny kód).

Kompilátor Roadsend PHP vytvára natívne binárne súbory (spustiteľné súbory) pre Windows a Linux. Vaše skripty nie sú obmedzené na konzolové programy (príkazové riadky): môžu byť zostavené so vstavanými webovými servermi, čo im umožňuje pracovať tak, ako fungujú na webovej stránke, aj keď samozrejme na vašom vlastnom používateľskom systéme. Kompilátor je vydaný pod GNU GPL a beží pod GNU LGPL. Bohužiaľ, program zastavil svoj aktívny vývoj.

Project Zero (pre Java)

(Poznámka: zdá sa, že je to tak softvér teraz neexistuje. Stránka je už pol roka mimo dosahu.) Project Zero obsahuje kompilátor a CLR, ktorý dokáže skompilovať váš PHP kód do Java bytecode a spustiť ho. Všimnite si, že Project Zero je viac než len PHP kompilátor/runtime; je to vyspelý rámec, ktorý vám umožňuje vylepšiť webové aplikácie pomocou PHP alebo Groovy (ďalší skriptovací jazyk). Tento kompilátor je dostupný pre Windows, Mac OS X a Linux. Aby ste mohli pracovať s týmto kompilátorom, budete si musieť stiahnuť Java Development Kit.

Ktorý kompilátor preferujete? Alebo máte iného obľúbeného prekladateľa? Nižšie zanechajte svoje pripomienky a komentáre, radi si ich prečítame a nakrútime.

Značky: PHP kompilátory, preklad skriptov

Kompilácia PHP zo zdroja sa častejšie vykonáva na systémoch podobných Unixu. Tí, ktorí pracujú v prostredí OS Windows, si s najväčšou pravdepodobnosťou stiahnu a nainštalujú PHP z binárnych balíkov. A hoci nesúhlasím s tým, že je jednoduchšie použiť predkompilované riešenie, dokonca aj na systémoch Unix existujú určité výhody, ktoré môže priniesť kompilácia binárnych súborov zo zdroja. Všetko vo všetkom:

  • Máš šancu jemné ladenie konečný produkt pri zostavovaní. Možno budete chcieť určité rozšírenie, ktoré sa kompiluje priamo do binárneho súboru namiesto toho, aby ste ho načítali ako externú knižnicu. Alebo možno chcete vypnúť niečo, čo je funkcia, ktorá je zvyčajne štandardne dostupná.
  • Počas kompilácie môžete v prípade potreby robiť triky, ktoré môžu zlepšiť výkon pre vaše konkrétne prostredie (samozrejme to predpokladá, že už viete, čo v tomto prípade robíte. nečítali by ste tento článok !).
  • Kompilácia môže byť jediným spôsobom, ako veci fungovať, ak boli kompilované binárne súbory postavené na starších verziách s podporou softvéru a knižníc a teraz používate nový systém.

Varovanie: kompilácia môže byť frustrujúca, najmä v systéme Windows! Musíte sa uistiť, že prostredie zostavy je nastavené správne, naučiť sa správne používať kompilátor a ďalšie nástroje na zostavovanie a spĺňať všetky závislosti na knižnici. Dúfame, že tento článok je vaším prvým krokom k prekonaniu mnohých z týchto prekážok.

Nastavenie prostredia na zostavenie

PHP je napísané v C, a preto je potrebný kompilátor C, ak sa chystáte zostaviť PHP zo zdroja. C++ je nadmnožinou C, takže dobrý kompilátor C++ by mal byť schopný skompilovať kód C, aj keď to nie je vždy tak. Pre Windows VisualMicrosoft, C + + Express (ktorý sa bude ďalej volať VC + +) je voľne dostupný na webovej stránke spoločnosti Microsoft. Bolo použité vydanie z roku 2010.

Pri výbere verzie kompilátora by ste mali mať na pamäti, ako budete PHP spúšťať. Ak musíte pracovať s mod_php, oficiálne skompilovanými binárnymi súbormi Apache a chcete kompilovať PHP pomocou Visual Studio 6, pretože toto je verzia kompilácie Apache. Modul musí byť zameraný na rovnakú runtime knižnicu ako Apache, v tomto prípade msvcrt.dll . Ak staviate Apache aj zo zdroja, alebo ak sa chystáte spustiť PHP ako FastCGI alebo CLI, potom to nie je problém a 2010 bude fungovať dobre.

Musíte tiež nainštalovať softvér Windows Development Kit (skôr SDK). SDK nám poskytuje dôležité hlavičkové súbory pre platformy Windows, ktoré potrebujeme na úspešné zostavenie. Aj toto bola použitá verzia 7.1.

Nainštalujte kompilátor a potom SDK. Nebudem diskutovať o inštalácii, pretože obe majú grafického sprievodcu inštaláciou, ktorý vás prevedie celým procesom.

Keď budete mať funkčný kompilátor, stiahnite si binárne nástroje a známe balíčky z windows.php.net. Balík binárnych nástrojov (používam archív 20110915) obsahuje vývojové nástroje ako re2c, bison a niektoré ďalšie príkazy, ktoré budete potrebovať na zostavenie PHP. Známy balík (používam archív 5.4, pretože sa zhoduje s verziou PHP, ktorú budem kompilovať) obsahuje minimálne potrebné závislosti hlavičiek a knižníc, ako napríklad zlib.h .

Pravdepodobne je samozrejmé, že si chcete stiahnuť aj zdroj PHP z windows.php.net. V čase písania tohto článku je aktuálna verzia PHP 5.4.6, takže toto číslo verzie uvidíte v príkladoch.

Toto dobrý nápad na vytvorenie pracovného priestoru, do ktorého môžete extrahovať zdrojový kód a kompilovať ho bez ovplyvnenia zvyšku vášho systému. Vytvorte priečinok C:\PHP-Dev, ktorý bude slúžiť ako pracovný adresár, a potom doň extrahujte binárny archív a nástroje.

Ďalej rozbaľte obsah archívu, zdroj PHP v C:\PHP-Dev, teraz máte v zdrojovom priečinku php5.4 a potom rozbaľte jeho archív deps do priečinka súrodenca deps. Adresárová štruktúra by mala vyzerať asi takto:

Otvorte príkazový riadok Windows SDK, ktorý bol nainštalovaný so súpravou SDK (Štart => Microsoft Windows SDK => Windows SDK Príkazový riadok) a spustite nasledujúce príkazy:

Setenv /release /xp /x86 cd C:\PHP-Dev bin\phpsdk_setvars.bat

Použitie konzoly SDK príkazového riadka je žiaduce pred bežnou konzolou cmd.exe, pretože nastavuje mnohé premenné prostredia špecifické pre kompiláciu zdrojového kódu. V tejto konzole je potrebné vykonať aj kompilácie príkazov neskôr.

setenv nastaviť niektoré vlastnosti zostavy pre prostredie, v tomto prípade je nastavené prostredie cieľového Windows XP 32-bitová verzia zostavy. Ak hľadáte dobrodružstvo, môžete skúsiť stavať s /x64. Definícia rôznych Verzie systému Windows, ako je /Vista , s najväčšou pravdepodobnosťou problémy s ukončením kvôli niektorým zvláštnym definíciám v skriptoch (PHP stále chce byť kompatibilný s XP). Ak naozaj neviete, čo robíte, je pravdepodobne najbezpečnejšie držať sa odporúčaných hodnôt, ktoré som použil vyššie.

Skript phpsdk_setvars.bat si vyžaduje niečo navyše premenné prostredia, proces zostavovania bol schopný nájsť binárne nástroje.

Majte na pamäti, že všetky tieto premenné nastavenia sú iba dočasné relácie v konzole. Ak všetko rýchlo zatvoríte, aby ste sa neskôr vrátili ku kompilácii, budete musieť príkaz spustiť znova, a ak tak neurobíte, zobrazia sa chyby, ako je táto, keď neskôr spustíte configure, nebudete môcť pokračovať:

Kontroluje sa súbor bison.exe... CHYBA: Vyžaduje sa bizón

Najťažšou časťou procesu je uistiť sa, že máte správne prostredie na zostavenie, požadované zdroje a žiadne závislosti. Takže teraz, keď je vaše prostredie nastavené zo zdroja a závislostí, je čas na kompiláciu!

Kompilácia PHP

IN príkazový riadok SDK, prejdite do zdrojového priečinka PHP a spustite buildconf. Príkaz je zodpovedný za generovanie konfiguračných súborov, ktoré vytvorí Makefile na riadenie procesu kompilácie.

Po dokončení buildconf (trvá to len sekundu) spustite configure --help - a preskúmajte pomocníka, ktoré funkcie chcete povoliť/zakázať, potom znova spustite configure (nastavenia) s akoukoľvek možnosťou, ktorú chcete. Pred odchodom je dobré skontrolovať výstup, pretože vás upozorní, ak niektorá z požadovaných závislostí nie je k dispozícii. Ak k tomu dôjde, môžete buď nainštalovať závislosti a znova spustiť nastavenie, alebo upraviť volanie tak, aby ste zakázali rozšírenia, ktoré ich potrebujú.

Nakoniec spustite NMAKE a spustite kompiláciu.

Cd C:\PHP-Dev\php5.4 buildconf nakonfigurujte test nmake nmake

Ak zlyhá konfigurácia alebo NMAKE, problém je jeden z dvoch: Po prvé, prostredie nie je správne nastavené, po druhé, povolili ste funkciu, ktorá závisí od externých knižníc a knižnice nie sú nainštalované vo vašom systéme. Ešte raz skontrolujte, čo ste vytvorili životné prostredie ako je uvedené vyššie, a že všetky ďalšie knižnice, ktoré môžu byť potrebné v rámci, boli upravené konfiguračné nastavenia.

Po dokončení prvého kompilačného procesu NMAKE nájdete svoj úplne nový PHP súbory v priečinku Release_TS. Test NMAKE spúšťa nové dvojité kapacitné testy chýb, aby ste sa uistili, že všetko funguje tak, ako má. Výsledky testov NMAKE sa posielajú tímu QA, od ktorého závisí zlepšenie PHP, takže práca môže trvať niekoľko minút, je to zodpovedná záležitosť.

V tomto bode môžete použiť aj voliteľný krok NMAKE snap-in, ktorý vytvorí ZIP archívy a binárne súbory, ktoré môžete kopírovať.

Kompilačné rozšírenia

Existujú dva spôsoby, ako kompilovať rozšírenia PHP: staticky a dynamicky. Staticky skompilované rozšírenie je skompilované do binárneho PHP, zatiaľ čo dynamicky skompilované rozšírenie je samostatná DLL, ktorú je možné načítať neskôr cez súbor php.ini. Rozšírenia sa zvyčajne kompilujú zo stavu knižnice DLL, hoci aj statická kompilácia má určité výhody, v konečnom dôsledku to závisí od vašich potrieb.

Ak chcete skompilovať rozšírenia PHP v systéme Windows, extrahujte priečinok zdrojového kódu rozšírenia do priečinka ext vo vašom zdrojovom adresári PHP. Potom prekonfigurujte skript spustením buildconf --force a opätovnou kompiláciou PHP pomocou príslušných klauzúl, aby ste rozšírenie povolili.

Ako príklad si zostavme rozšírenie AOP staticky. Stiahnite si zdrojový kód z PECL a rozbaľte ho do priečinka v ext. Potom postupujte takto:

Cd C:\PHP-Dev\php5.4 buildconf --force configure --enable-aop nmake

S voľbou --force ho buildconf prinúti obnoviť konfiguračný skript. Potom spustite configure --help a mali by ste vidieť možnosť zahrnúť nové rozšírenie do výstupu. V tomto prípade je to --enable-AOP.

Keď nmake skončí, budete potrebovať novovybudovaný binárny PHP s AOP.

Rozšírenia budú k dispozícii ako DLL a nie pečené v PHP, môžete postupovať podľa rovnakých krokov ako vyššie, ale zadanie „shared“ (zdieľané) ako hodnoty na konfiguráciu umožňuje túto možnosť.

Buildconf --force configure --enable-aop=shared

Výsledná DLL bude v priečinku Release_TS spolu s binárnou kompiláciou PHP skončí, v tomto prípade je názov php_aop.dll .

P.S.

Kompilácia v systéme Windows je stále trochu zložitejšia, najmä pokiaľ ide o rozšírenie. Schopnosť kompilovať zdrojový kód je dobrá zručnosť, najmä ak chcete neskôr upraviť PHP.

Článok pre vás pripravil tím stránky
Pôvodný článok:
Preložil: Viktor Klim

Programovacie jazyky existujú v dvoch variantoch: interpretované a kompilované. Aký jazyk je PHP? Aby sme mohli odpovedať na túto otázku, musíme pochopiť terminológiu.

Program, ktorý prekladá kód napísaný v jednom programovacom jazyku do druhého, sa nazýva prekladač. Kompilátor je zároveň aj prekladateľ. Prekladá kód napísaný v jazyku vysoký stupeň do strojového kódu. Výsledkom procesu kompilácie je vytvorenie binárneho spustiteľného súboru, ktorý je už možné spustiť bez kompilátora.

Tlmočník je úplne iná kategória. Tlmočník kód neprekladá, ale vykonáva. Tlmočník analyzuje kód programu a vykoná každý z jeho riadkov. Zakaždým, keď spustíte takýto kód, musíte použiť tlmočníka.

Z hľadiska výkonu sú tlmočníci výrazne horšie ako kompilátory, pretože binárny kód sa vykonáva oveľa rýchlejšie. Ale tlmočníci vám umožňujú plne ovládať program počas jeho vykonávania.

Pokiaľ ide o PHP, nie je to ani kompilátor, ani interpret. PHP je kríženec medzi kompilátorom a tlmočníkom. Skúsme to pochopiť a pouvažujme nad tým, ako PHP spracováva kód.

Zvážte obrázok:

Vidíme, že PHP tvoria dva takmer nezávislé bloky – prekladač a tlmočník. Prečo to bolo potrebné urobiť? Samozrejme z rýchlostných dôvodov.

Vstup PHP je skript. Preloží ho (preloží), skontroluje syntax, do špeciálneho bajtkódu (internej reprezentácie). PHP potom spustí bajtkód (nie skutočný programový kód) bez vytvorenia spustiteľného súboru.

Bytecode je oveľa kompaktnejší ako bežný programový kód, takže je jednoduchšie (a rýchlejšie) interpretovať (spustiť). Posúďte sami: analýza sa vykonáva iba raz vo fáze prekladu a už sa vykonáva „polotovar“ - bajtový kód, ktorý je na tieto účely oveľa pohodlnejší. Preto je PHP viac tlmočník ako kompilátor. Takáto „dvojitá práca“ bola potrebná na nasledujúce účely.

Zvážte slučku:

Pre (i=0;i<10; i++) { Operator_1; Operator_2; Operator_3; ............ Operator_99; Operator_100; }

Takýto cyklus sa „roztočí“ 10-krát. Pre každý z týchto desiatich priechodov musí tlmočník a 100 riadky kódu. A v ňom musíte analyzovať a vykonať 10 * 100 = 1 000 riadkov kódu! Ak preložíte celý cyklus raz do bajtkódu, bude musieť analyzovať 10-krát menej! To znamená, že skripty budú bežať 10-krát rýchlejšie!

Ukazuje sa, že PHP je.

Hlavnou fázou práce PHP je interpretácia internej reprezentácie programu a jeho vykonávanie. Práve táto fáza zaberá pri vážnych scenároch najviac času. Spomalenie však nie je také výrazné.

Stojí za to pripomenúť, že PHP verzia 3 bola „čistým“ tlmočníkom a s PHP 4 skripty bežia oveľa rýchlejšie, keďže PHP 4 (a PHP5) je tlmočník.

Jazyk Perl, ktorý sa takmer vždy nazýva kompilátor, funguje úplne rovnakým spôsobom – prekladá text programu do internej reprezentácie a potom pri spustení použije výsledný kód. Dalo by sa teda povedať, že PHP verzia 4 je kompilátor rovnako ako Perl.

Sme teda nútení konštatovať, že PHP je tlmočník so zabudovanou prekladacou jednotkou, ktorá optimalizuje priebeh tlmočenia.

Používanie tlmočníka (a teda PHP) má svoje nesporné výhody:

  • Nie je potrebné sa starať o uvoľnenie pridelenej pamäte, nie je potrebné zatvárať súbory, keď s nimi skončíte - tlmočník vykoná všetku rutinnú prácu, pretože program je vykonávaný pod jeho ostražitou kontrolou;
  • Nemusíte premýšľať o typoch premenných a nemusíte premennú deklarovať pred jej prvým použitím;
  • Ladenie programov a zisťovanie chýb sú výrazne zjednodušené – tlmočník má plnú kontrolu nad týmto procesom;
  • V kontexte webových aplikácií má tlmočník aj ďalšiu veľmi dôležitú výhodu – nehrozí „zaseknutie“ servera pri nefunkčnosti programu.

Sú tu aj ďalšie výhody. Vo všeobecnosti môže použitie tlmočníka poskytnúť skriptom výkon, ktorý od nich používatelia webu očakávajú.

Postihnutie výkonu PHP je citeľné v prípade veľkých a zložitých slučiek, pri spracovaní veľkého počtu riadkov atď. Upozorňujeme však, že toto je jediná nevýhoda PHP, ktorá sa bude čoraz menej prejavovať, keď budú vychádzať výkonnejšie procesory, takže že nakoniec úplne zmizne.

<<< Назад
(Čo je nové v PHP5?)
Obsah Vpred >>>
(Prechod na PHP 5.3)

Ak máte ďalšie otázky alebo vám niečo nie je jasné, vitajte u nás