Anatomie webových požadavků – perspektiva PHP


Tento blogový příspěvek je ZDARMA kapitola z knihy Jump Start PHP Environment od Bruno Skvorc.

Je důležité porozumět základním konceptům a procesům webového programování, než se pustíme do drobných detailů kódování v PHP. čeho tato kapitola dosáhne.

Než jsme přednesli text z kapitoly, položili jsme Bruno několik otázek.

HostAdvice: Co vás přimělo napsat tuto knihu?
Bruno Skvorc: Chtěl jsem napsat knihu, která se zabývá věcí, která většině lidí brání v řádném zahájení práce s PHP – nastavení, které přichází před skutečným kódem. Jaký software potřebujete? Proč? Proč ne X a proč místo toho Y? Jak dosáhnete stejného nastavení při nasazení aplikace naživo a co je třeba použít, aby se věci shodovaly v celém týmu. V podstatě jsem chtěl vysvětlit "infrastruktura" obecně PHP a PHP aplikace, a to způsobem, který věci vyčistí a vytvoří pevný základ, na kterém lze začít kódovat správným způsobem.

HostAdvice: Jaké nové znalosti jste získali při psaní knihy?
Bruno Skvorc: Dozvěděl jsem se, že technické knihy jsou zastaralé ještě rychleji, než jsem původně očekával. Prostřednictvím zodpovězení otázek ohledně postupu nastavení, který se objevil v důsledku malých změn v používaném softwaru, jsem se dozvěděl, že pokyny musí být co nejširší a nejuniverzálnější, přičemž si stále zachovávají jasnost a zaměření. To byla nejtěžší část – učinit pokyny nadčasovými, vzhledem k tomu, jak časově citlivý je software, který používáme. V současné době připravuji aktualizaci knihy, která řeší většinu těchto změn trvale.

HostAdvice: Jakékoli další rady pro naše čtenáře?
Bruno Skvorc: Vzhledem k tomu, že v knize pojednávám o některých přístupech k hostování a o způsobech, jak pro vás servery fungují namísto naopak, myslím, že by tato kniha byla pro návštěvníky Hostadvice vynikajícím zdrojem – zejména proto, že vysvětluji, proč sdílený hosting (i když jsem používat je pro některé věci, taky) není v současné době opravdu slušná volba. To platí zejména proto, že v této knize pokrývám všechny základní dovednosti Linuxu a učím lidi, jak sami provádět základní údržbu serveru. Vyzbrojeni těmito schopnostmi mohou uživatelé snadno nastavit mnohem výkonnější stroj než sdílený hosting a provozovat na něm jakýkoli software – žádná omezení uložená společností, kterou platíte, aby vám věci spouštěli.

Anatomie webových požadavků

Než se dostaneme do drsného nastavení dobrého prostředí PHP, musíte pochopit, jak webové požadavky skutečně fungují. Tato kapitola vysvětlí, co se stane, když do svého prohlížeče píchnete webovou adresu a obdržíte výsledek. My’Nebudu tam příliš technický.’Není třeba vysvětlovat matice a šrouby, protože by vás to pravděpodobně jen zmást. Místo toho to bude nováček přátelské vysvětlení toho, jak se všechny různé aspekty vývoje webu a spotřeby webu spojují a vytvářejí web, který znáte a milujete. Hlavním účelem této kapitoly je naučit vás, kde začíná hrát váš zvolený programovací jazyk (v tomto případě PHP) a které části záhadného webového požadavku to ovlivní..

Pokud znáte náležitosti webu a znáte podmínky uvedené v předchozím odstavci, neváhejte přejít na další kapitolu.

Klient a Server

Museli jste slyšet o podmínkách “programování na straně klienta” a “programování na straně serveru,” alespoň v reklamách na pracovní místa. V této části jsme’Před přechodem na podrobnosti je stručně vysvětlím.

Co je to klient?

A klient je váš webový prohlížeč.

V kontextu webu, zatímco jste technicky v konvenční
smysl slova (děláte žádost a obsluhuje software), prohlížeč je považován za klientský software zvyklý na něco požádat server.

Jakmile to obdrží “něco” (nejčastěji jde o spoustu textu), rozhoduje o tom, jak by vám to, konečnému klientovi, mělo představit.

Co je to server?

Podobně jako u klienta, server má také dva významy:

  1. program, který odpovídá na otázky položené klientem
  2. počítač (fyzický stroj), na kterém je nainstalován program serveru

V této knize a v souvislosti s vývojem webu máme na mysli první.

Ve skutečnosti v celé této knize jsme’Naučím se, jak můžeme serverový program snadno nainstalovat na vlastní počítač “předstírání internetu” a nechat počítač přemýšlet o webu, který jsme my’vývoj je online a přístupný všem.

Nechat’s podívat se na první bod trochu víc: jak program odpovídá na otázky?

Stručně řečeno, server čeká na otázku, jako je “dej mi text blogového příspěvku
od 14. února” a odpovídá buď “OK, zde: [nějaké HTML, obsahující text oft daného příspěvku]” nebo “Promiň, můžu’Tohle nenajdu’nic pod 14. února.” Je pravda, že já’mafaphrasing, ale to’více či méně, co se stane.

Já’ilustroval jsem to na obrázku 1.1.

Anatomie webových požadavků Obrázek 1.1. Zjednodušený požadavek na server a jeho odpověď

Vývoj webu je ve skutečnosti relativně jednoduchá záležitost, jak přimět klienta klást správné otázky a učit server, aby dával správné odpovědi. Připraven jít trochu hlouběji do králičí díry?
Tady to jde …

Základy webových požadavků

Zatímco webový požadavek má velmi specifický význam, je často používán jako plošný termín pro komunikaci mezi klientem a serverem. Celý tento komunikační proces je přehledně vysvětlen na obrázku 1.2, roztomilém komiksu VladStudio.

Anatomie webových požadavkůObrázek 1.2. Jak funguje internet od VladStudio

Jak to všechno funguje

Nechat’s rozbijte komiks na obrázku 1.2 dolů.

Jste uživatel ― jste král. Naštěstí vydáváte příkazy a prohlížeč se poslouchá. Jako uživatel zde končí vaše povědomí o procesu a příště vás’vědomě osloveno je v druhém až posledním snímku komiksu. Celý proces mezi vámi je pro vás neviditelný, kromě případů, kdy jste’znovu vývojář; pak ty’znovu kouzelnického kouzelnického krále, který vidí všechno’se to děje, ale více o tom v pozdějších kapitolách.

Prohlížeč prochází bránou firewall, která je obvykle považována za samozřejmost. Pravděpodobně máte nějaký způsob brány firewall v počítači právě teď nebo v routeru / modemu. Prohlížeč ví, jak to projít, protože vy’Řekl jsem strážci, že prohlížeč je v pořádku a měl by být propuštěn.

Pak přijde část my’Ještě jsem se zmínit: DNS (Domain Name System) servery – část tak mystickou a nepřístupnou pro většinu, většina uživatelů internetu (a vývojářů, dokonce!) to považuje za samozřejmost, akceptuje, že existuje, a snaží se se toho příliš netrápit. Zdá se, že obecný konsenzus je, že stejně jako otázky týkající se smyslu života, dotazy týkající se původu času a prostoru a neskutečné chutnosti arašídového másla a banánového combo, některé věci, jako je původ a účel serverů DNS, jsou lépe nechat bez pochyb. Pokud byste chtěli vědět, jaké jsou, vysvětlíme je v části nazvané “Pro ty, kteří chtějí více” na konci této kapitoly podrobněji.

Stručně řečeno, takto fungují. Každý doména na internetu (jako “example.com”) je vázán na konkrétní IP adresu (představovanou čísly na rozcestníku ve třetím snímku komiksu). An IP adresa je sada čísel identifikujících daný server; IP adresy říkají prohlížeči, jak se pohybovat po internetu
najděte počítač (server)’hledá to.

Pamatujete zeměpisnou délku a šířku z geografických tříd? Specificky definují geografický bod na planetě Zemi a jsou kompatibilní s různými zeměmi, což znamená, že kdokoli odkudkoli bude vědět, jak najít místo, pokud jim dáte hodnoty zeměpisné šířky a délky; máme ale také popis nejoblíbenějších souřadnic, který je přátelský k člověku.

Například název města, na které jsem šel na univerzitu, je Rijeka. Není mnoho lidí, kteří budou vědět, kde je najít na mapě, ale pokud jim dám souřadnice (45,3167 ° S, 14,4167 ° V), 2 mohou je snadno najít. DNS server je překladatel, průvodce. Tento server ví, které adresy IP odpovídají názvu domény, a řekne prohlížeči, kam má jít dále.

Po přesměrování na konkrétní IP adresu prohlížeč klepe na dveře hostujícího serveru. Tento konkrétní server byl zmíněn v předchozí části a odkazujeme se na něj pouze jako “server.” Prohlížeč přináší informace, které uživatel požadoval, a požádá server o odpověď na otázku “google.com?”

Server odpovídá: “Ano, na stránce google.com se v souboru říká …” a dává odpověď. Prohlížeč se vrátí uživateli (králi) a sdělí informace. Tato část je co’Je to důležité pro nás vývojáře ― řeknutí serveru, jakou odpověď na konkrétní otázku. Pamatujte si tuto část.

Přední a zadní část

To’s čas definovat další dva termíny, které jste museli alespoň jednou slyšet. Front-end vývoj (také nazývaný vývoj na straně klienta) se zaměřuje na práci s klientským softwarem back-end vývoj (také nazývaný vývoj na straně serveru) se zabývá serverovým softwarem.

Když server vrátí text do vašeho prohlížeče (na obrázku 1.2 je to text, který)’opakuje se s králem ve druhém až posledním snímku) a váš prohlížeč vám ho představí, jak tento text vypadá a jakým způsobem s ním můžete komunikovat, je front-end (nebo klienti)
programování. Když otevřete web a odkaz je tučný a má jinou barvu než zbytek textu, bylo ke změně vzhledu dosaženo pomocí programování na straně klienta (HTML plus CSS). Když můžete přetáhnout prvek na obrazovce nebo iniciovat animace nebo zvuky, je to’je také dosaženo pomocí programování na straně klienta (konkrétně HTML a CSS doprovázené JavaScriptem).

Programování na straně serveru nebo vývoj back-end je akce konfigurace serverového počítače a programu (viz část nazvaná “Co je to server?” pro vysvětlení této dvojnosti) vrátit na požádání příslušná data do prohlížeče. To obvykle znamená programování v jazyce na straně serveru, jako je PHP. PHP provede některé výpočty nebo vezme některá data z databáze, promění je v
text, který lze dát do prohlížeče, a prohlížeč jej vezme a zobrazí jej uživateli.

Přestože veškerý obsah vrácený do prohlížeče k doručení uživateli je skutečně uložen na serveru, nazýváme CSS a JavaScript “na straně klienta” protože jejich výpočty probíhají v prohlížeči. Například, pokud jsem řekl JavaScriptu, aby animoval čtverec proměňující se v kruh, matematika za výpočtem se bude odehrávat v prohlížeči. Server poskytne pouze vzorec a řekne prohlížeči: “Když to vezmeš zpět ke svému králi, řekni to takto …” Na druhé straně, programování na straně serveru znamená, že veškerá logika, výpočty, vzorce a tak dále se na serveru děje, pouze vrací konečný výsledek. Pokud například mám web, který počítá počet obrázků nahraných uživatelem (například Facebook, který spočítá počet obrázků ve vašem albu), bude tento výpočet proveden na serveru a pouze konečnému číslu bude přiděleno prohlížeč, když o tyto informace požádá.

Chcete-li shrnout: front-end je, když píšete kód, který je spuštěn v prohlížeči (HTML, CSS, JavaScript), zatímco back-end je, když píšete kód, který je spuštěn na serveru před předáním konečného výsledku do prohlížeče. Bill, server-side JavaScript, server-side Dart, Ruby, Python a další programovací jazyky vyhovují návrhu zákona.

Je čas jít ještě hlouběji do králičí díry.

Jazyky na straně serveru

Tato kniha se zaměřuje na přípravu vývojového prostředí pro programování na straně serveru. Jsme vyhráli’t jednat s HTML, CSS nebo JavaScript; existuje spousta knih o těch, kteří jsou tam venku, a nastavení toku vývoje na straně klienta je dost složité samo o sobě. Místo toho jsme’Budu se zabývat výhradně přípravami na straně serveru’je velmi snadné začít špatným způsobem. Stejně jako skvrna na balónu vyroste ve velkou skvrnu, když se naplní vzduchem, může také špatný krok na začátku programovací kariéry vyústit v dlouhodobě škodlivý zvyk.

Jak již možná víte, příklady jazyků na straně serveru zahrnují PHP, Ruby a Python. Sedí jako programy v počítači serveru i serverovém programu. Tyto jazyky přebírají určité příkazy ze serverového programu a výsledkem těchto příkazů je vrátí zpět. Je to tento výstup, který se dává prohlížeči, když uživatel požádá o odpověď na určitou otázku. Stručně řečeno, řeknutím
server “Když přijde požadavek na web example.com, spusťte tento soubor pomocí PHP”:

Jazyky na straně serveru

… dali jsme jí způsob, jak získat odpověď pro klienta. Poté se spustí soubor PHP a jeho obsah “Ahoj světe” je vygenerován a odeslán zpět do serverového programu, který je poté předán prohlížeči. Prohlížeč ji vezme zpět uživateli a jednoduše ji zopakuje “Ahoj světe.” Prohlížeč přestane předávat zbytek obsahu souboru; značka php <?php a echo klíčových slov jsou ve výstupu přeskočeny. Je to proto, že značka <?php řekne serveru “Spusťte tento soubor pomocí PHP” a poté, když soubor spouštíte přes PHP, echo to řekne “Výstup následující fráze na obrazovce.”

jestli ty’znovu to pochopit, viz obrázek 1.3, který se rozšiřuje na obrázek 1.1.

Jazyky na straně serveruObrázek 1.3. Server požádá PHP o odpověď, pokud ano’Nelze jej najít

Na obrázku 1.3:

■ digram představuje vnitřek fyzického počítače na obrázku 1.1
■ Nginx je program webového serveru nainstalovaný v tomto počítači
■ Nginx přijímá vstup od klienta formou otázky (blog pro 14. února)
■ Nginx zkontroluje, zda existuje’s stránka pro blog / únor / 14
■ protože neexistuje, Nginx kontroluje cesty k souborům PHP
■ Nginx zjistí, že potřebuje spustit skript blog.php prostřednictvím PHP
■ skript blog.php se připojí k databázi a odešle text pro dané datum
■ PHP engine odešle tento výsledek na server
■ Nginx jej odešle zpět klientovi

Shrnutí: PHP je generátor odpovědí pro server, takže ví, jaké odpovědi mají dát prohlížeči’s otázkami. Tímto způsobem server ne’Nepotřebuji znát odpovědi, prostě ví, že PHP dělá a ptá se, a pak odešle odpověď do prohlížeče. Představte si “Dobrý den, Vaše jméno” stránka; to’Je nemožné generovat stránky pro každé existující jméno, ale můžeme mít PHP požádat o jméno na jedné stránce, a pak
vygenerujte odpověď, kterou dáte serveru na jiné stránce.

Co’Je důležité pochopit zde je komunikační tok mezi klientem a serverem a jazyk serveru a serveru. Celá tato komunikace zapadá do pátého a šestého snímku v komiksu na obrázku 1.2. Ve skutečnosti by část, kde serverový program hovoří s programem PHP, probíhala zcela v šestém rámci.

Generování odpovědí pomocí jazyků na straně serveru

Poslední a nejhlubší úrovní naší králičí díry je skutečná konverzace mezi serverovým programem a jazykem na straně serveru our v našem případě (a všemi budoucími případy), PHP. Pokryli jsme to do určité míry v předchozí sekci, ale nechali jsme to’Nyní se podívejme na další příklad se situací, kdy nelze najít odpověď.

Nechat’s říkají, že server je klientem požádán o následující: “Můžete mě dostat, co jste podali example.com/user/id/54?” To se stane dále:

  1. Server zkontroluje, zda existuje’je něco již připraveného pod cestou: / user / id / 54. Pokud zde nejsou žádné soubory, najdete to’je nakonfigurován tak, aby se ptal PHP.
  2. Server se ptá PHP: “Hej, můžeš najít něco pod / user / id / 54?”
  3. PHP aktivuje a dívá se skrz jeho trasy. Hle, aj, cesta / user / id / 54 říká “aktivujte soubor user.php s parametrem id hodnoty 54.”
  4. PHP provede soubor (skutečná logika souboru je mimo bod a mimo rozsah této kapitoly) a obdrží výsledek. Možná je výsledkem e-mailová adresa 54. uživatele v databázi. Tato e-mailová adresa je poté vrácena serveru: “Jasně, něco jsem našel pod touto cestou. Odpověď zní: [email protected]”.
  5. Server odpoví “dík!” a předá tuto zprávu klientovi, který ji pak předloží koncovému uživateli – vám.

Co když tam?’pod touto cestou nebylo nic podáno? Například, když klient požaduje, došlo k překlepu example.com/urer/id/54 (spíše než “uživatel”). Tady’co se stane:

  1. Server zkontroluje, zda existuje’s čímkoli již připraveným pod trasou: / urer / id / 54. Pokud nejsou nalezeny žádné soubory, je to’je nakonfigurován tak, aby se ptal PHP.
  2. Server se ptá PHP: “Můžete najít něco pod / urer / id / 54?”
  3. PHP se aktivuje a dívá se skrz jeho trasy, ale nedokáže objevit nic. Vrací a “404 Stránka nenalezena” chyba serveru (jako na obrázku 1.1, výsledek vlevo dole). Jak s největší pravděpodobností víte, 404 je kód běžný ve webových technologiích a znamená, že to, co hledáte, není možné najít tam, kde si myslíte, že by to mohlo být. Existuje mnoho takových stavových kódů, ale v této fázi vaší kariéry je nemusíte znát všechny.
  4. Server přijme zprávu 404 a přemýšlí “Hmm, PHP mělo štěstí. No, to nemá nic, nemám nic, lepší vrátit klientovi stránku, která říká, že jsme byli neúspěšní.” Prohlížeči se pak zobrazí stránka 404, což je obvykle jen textové varování, například “Jejda, zkusili jste špatný odkaz!” ale může být také složité, jak chcete.

Věřím, že tato kapitola byla jasná s pojmy, které představila, a pomohla vám dostat se
vaše ložiska, pokud jde o to, kde jste (nebo budete) ve velkém schématu PHP
programování. V následující části vy’Najdu další technické informace
na webových požadavcích a serverech DNS.

Pro ty, kteří chtějí více

Servery DNS

Jak již bylo zmíněno, každá doména (například example.com) na internetu je vázána na konkrétní adresu IP (například 93.184.216.34). IP adresa je sada čísel identifikujících daný server. Jinými slovy, adresy IP říkají prohlížeči, jak procházet internet a najít počítač (server), který hledá. Server DNS (známý také jako server jmenných jmen) ví, které adresy IP odpovídají názvu domény, a říká prohlížeči, kam má jít dále.

Při pokusu zjistit, která IP adresa odpovídá názvu domény, prohlížeč nejprve zkontroluje, zda je vlastní mezipamětiSaved uložený seznam dříve navštívených domén. Každý prohlížeč udržuje tento seznam a pravidelně jej aktualizuje. Pokud najde kombinaci doména-IP ve své vlastní mezipaměti, načte se web rychleji, protože tam existuje’Není třeba o to žádat server DNS. Pokud doména není’V mezipaměti prohlížeč požádá o program nazvaný resolver (který je součástí vašeho operačního systému) a zkontrolujte soubor hosts v počítači’je nainstalován na. Soubor hosts je místo, kde uživatel může skutečně definovat, který web mapuje, na kterou IP adresu. (My’Naučím se používat tento soubor v dalších kapitolách.) Pokud potřebné informace nejsou’• tam se kontroluje mezipaměť DNS na routeru (směrovače obvykle také mají), a pokud ano’není tam také, společnost ISP’s Dotaz na server DNS.

Až do posledního kroku se všechno dělo na vašem vlastním počítači nebo, jak říkáme, místně. Teď to’je čas navštívit ISP’už to není místní záležitost ― to’je vzdálené. Pokud ISP’s DNS server je bez záznamu pro doménu, zjišťuje a sděluje prohlížeči, pak ukládá výsledky do mezipaměti pro budoucí dotazy. Jak to zjistí? Disektuje název domény zprava doleva.

www.example.com je rozdělena na fragmenty. Část .com, nazvaná TLD nebo toplevel doména, je první. Na celém světě existuje mnoho serverů DNS, často konfigurovaných tak, že více počítačů funguje jako jeden. Je to tak, že pokud jeden zemře, ostatní zajistí, že služba je nepřetržitá. Nejvyšší úroveň těchto serverů je kořenové servery, které vědí, kde dále hledat podrobnosti o doméně v daném TLD. Kořenový server s příslušnými záznamy pro .com bude vědět, že se jedná o dot com, takže vám pošle dotaz dále v XYZ ― XYZ, což je další jmenný server, který bude znát příkladnou část. Dále ještě část www (známá také jako subdoména) vstoupí do hry a bude zaregistrován také na konkrétním jmenném serveru v této matoucí řetězci jmen a serverů. Jakmile jsou všechny fragmenty (známé také jako štítky: .com, example a www) rozloženy na IP adresu, je výsledek odeslán zpět.

jestli ty’Rád bych se dozvěděl více o kořenových serverech a chtěl bych zjistit, jak celý internet’Hladké fungování závisí na třinácti hlavních počítačích (dobře, klastrech počítačů), podívejte se na stránku s kořenovým jménem na Wikipedii nebo na úžasně komplexních odpovědích na Super User.

Co se stane, když píšete …

Častým dotazem na pracovní pohovor programátora je “Co se stane, když do prohlížeče zadáte google.com’s a stiskněte klávesu enter?” Zatímco jsme to částečně vysvětlili dříve (i když zjednodušeným způsobem), podívejte se na Alexa Gaynora’s vynikající popis, pokud jste’Rád bych věděl přesné podrobnosti, od hardwaru po koncový software. To’s velmi komplexní, ale velmi dobře napsaný příspěvek. Uvědomte si, že realisticky není tato úroveň podrobných znalostí nezbytná, abychom byli dobrým vývojářem.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map