Diskuze: QueryString a dynamická stránka
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 50 zpráv z 60.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Jednoduše - potřebuji přenést HTML vygenerované v PHP kódu do stránky s požadovaným QueryStringem. Musí to však být dynamické řešení - aby jej mohlo používat tisíce uživatelů současně - každý s jedinečným HTML...
Ty stránky asi nebudou každá jiná, takže bych měl pár .phtml šablon,
do kterých by se podle potřeby dosazovala data. Předal by jsi pole dat a
název(typ) šablony a natáhl ji na té požadované stránce. Nevím jestli to
je správné řešení, ale je to řešení
Já taky. Proto mívám jen index.php a žádný error.php, abych se v tom náhodou neztratil.
Totéž jako s tím souborem. Jak bych tím mohl řešit stovky uživatelů? Jeden zapíše a druhý mu to přepíše...
Ale kdepak, ty šablony budou obsahovat neměnná data a bude se jenom na určitá místa dosazovat, příklad
<h1><?php $nadpis ?></h1>
<p>
<?php $text ?>
</p>
Já chci mít holé PHP v main.php. Toho dosáhnu jen vyřešením problematiky předání QueryStringu do cílové stránky, bez ztrát vygenerovaného obsahu. Tedy i errory bych vygeneroval přímo v main.php a stejným způsobem jako u toho výtahu z databáze bych dosadil příslušný QueryString. Takže řešení, které navrhnete by mohlo počítat i s tím, že do něj nacpu errory. Pak budu mít jen HTML a PHP... (Naprosto separované.)
Ale jak tomu předám ta data? Ono HTML není zrovna krátké.
Proto používám Heredoc, které to vše vyřeší za mne. Data si uložím do proměnných a zavolám šablonu, která ty proměnné jenom použije.
A hodiny čekat? No jako i POST má své limity. Nechci zavrhovat každé řešení - ale skutečně není něco elegantního?
POST se používá jen když klient ukládá data na server. Při stahování se běžně používá GET.
A co kdybys použil AJAX? HTML stránku bys měl v klientovi stále stejnou a modifikoval bys jen DOM.
Nechce se mi do toho plést klient. Když vymyslím serverové řešení, budu řešit funkčnost na jednom PC, když u klienta, budu jich řešit milióny... (I šéf by chtěl serverové řešení - klientům by to usnadnilo používání - nejsou to lidi, co PC umí používat - 50 - 70 let...) Mám několik řešení, ale doufal jsem, že napíšete, že není třeba redirectovat, nebo, že se dá nějak zachovat vygenerované HTML, či prostě, že by to šlo nějak jednoduše. Zkusím ještě předejít vygenerování a nějak to přesměrovat ještě před tím. Ale zdá se to být nepravděpodobné...
Pořád mi totiž není jasné, čeho chceš docílit. Proč vlastně chceš odesílat HTML stránku z klienta na server?
Psal jsem to jednoduše - potřebuji po vygenerování HTML(výtah z DB)/Erroru nacpat do URL status. Error si alespoň mohu poslat QueryStringem, tak jsem udělal tu error.php, ale HTML již ne... (Vycházím z toho, že QueryString nastavím jen při přesměrování.)
Pořád ti nerozumím. Proč chceš posílat QueryString, který na klientovi nemá co pohledávat?
Nebo jen potřebuješ udělat 301?
Potřebuji dostat návrat do jednoho programu. Kdybych to nechal jen v HTML, musel by si ten program poradit s HTML. S QueryStringem to bude mnohem efektivnější... (Nehledě na to, že nebude odchytávat stráku - vycucne si jen URL.)
Možná chceš udělat něco takového:
<?php
// uložím data do souboru AABBCC66.html
header('Location: AABBCC66.html');
exit;
A co když do toho neexistujícího souboru rovnou redirectuji? (Že by to bylo bráno jako cache, které se pravidelně maže...)
Nároky beru jako vytvoření, přesměrování a smazání...
Běžně ten neexistující soubor ani nevytvářím. Zůstane virtuální, obsah dostane dynamicky. Není tedy co mazat.
Takže mohu rovnou redirectovat do neexistujícího souboru a ono to použije vygenerovaný HTML? A pak už se nemusím starat o zanesení?
header("Location: AABBCC66.htm?code=2");
?
Musíš také zajistit, aby při požadavku na ten soubor byl ten obsah nějak doplněn.
Nehledáš náhodou memcache nebo reverzní proxy cache?
Nechceš ty miniaturní soubory úplně normálně vygenerovat z databáze při každém požadavku a zbytek ponechat na HTTP cache?
Napadl mne opačný postup. Nebudu se snažit dostat výstup do QueryStringu. Uložím ho pod souborem s IČO v názvu a program si ho stáhne. Pak tedy bude stačit, že vyšle URL, počká si dejme tomu 20 sekund a pokusí se stáhnout soubor. Bude to opakovat tak dlouho, dokud tam nebude, nebo dokud to nevzdá. Jak ho stáhne, tak ho smaže... Nechápu, proč mě to nenapadlo rovnou...
(výstupem bude jen status (kód) - postačí tedy nějaké cache)
Co na tom trvá 20 sekund? To děláš na Didaktiku?
No však. Takové opičárny vůbec nemusíš dělat. Co by se stalo, pokud bys použil standardní postup pro normální generování dynamických webstránek v PHP?
? Na serveru bude normální HTML. Jen si uložím jedno číslo do cache. Což je také normální...
Běžně se u svého lokálního webserveru na notebooku pohybuji v jednotkách ms.
To není normální. Normální je, pokud na tom serveru je normální šablona v PHP, do které před odesláním na klienta doplníš to chybějící číslo.
Přesto nebudu mít request jako při čekání na Redirect. Prostě jen vyšlu URL, ale jestli se to něco podařilo, či cokoliv jiného, se dozvím až po vytažení cache... Takže se na serveru budu z toho programu v nějakém intevalu dožadovat cache pojmenovaného po IČu...
Ale nebudu z programu tahat šablonu. Budu tahat cache - to je normálnější... Existuje cache na jedno použití? (Po vytažení se smaže.)
Tak jak z programu, který vyšle URL dám vědět uživateli, že to dopadlo tak a tak?
Přece přes stavové kódy. Stavový kód přijde s každou odpovědí na požadavek.
Blbnu - bude to Delphi. Čily - jak to bude vypadat u Delphi? (Například vyšlu URL, s QueryStringem pro regitraci.) Nechápu, co mám poslat ze serveru, jelikož většinu errorů, podle kterých určuji status si vymýšlím z podmínek. Tedy vygeneruji pouze HTML s hláškou. Ale status jsem chtěl předávat přes QueryString. Ale jak to dát do odpovědi netuším...
Zobrazeno 50 zpráv z 60.