Portál AbcLinuxu, 10. května 2025 00:12

Dotaz: Přímý výpis do html jako v konzoli

5.2.2013 20:01 pepa
Přímý výpis do html jako v konzoli
Přečteno: 209×
Odpovědět | Admin
Zdravím, chci se zeptat zda je možné vypisovat operace přesně jak jdou po sobě, Stejně jako v konzoli, ale v HTML. Umím to jen tak že čekám a pak mi to vyplivne výsledek, což není to co chci, snad jsem se vyjádřil jasně. Je mi jasné, že by to asi šlo přez AJAX, ale o to mi samozřejmě teké nejde... Díky za rady...
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.2.2013 20:26 Honza
Rozbalit Rozbalit vše Re: Přímý výpis do html jako v konzoli
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud používáš php tak použij output buffering - předpokládám, že i v ostatních jazycích to bude podobné.
5.2.2013 20:56 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Přímý výpis do html jako v konzoli
Odpovědět | | Sbalit | Link | Blokovat | Admin

Pokud spíše než HTML jste myslel HTTP, tak ano, jde to.

Odpověď můžete zaslat HTTP verzí 1.0, kdy se odpověď ukončí ukončením TCP spojením. Nebo můžete použít verzi 1.1 a tzv. chunked kódování, kdy se tělo odesílá po částech a prokládá se kontrolními bajty určujícími velikost každé části a konec.

V podstatě se musíte vyvarovat standardnímu přenosu verze 1.1, kdy se v hlavičkách odesílá velikost těla, takže server nejprve musí znát celé tělo, takže jak jste popsal, vše se zdrží na serveru a odešle až, když je vše hotovo.

5.2.2013 21:21 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Přímý výpis do html jako v konzoli

Příklad:

( printf 'HTTP/1.0 200 Ok\r\nContent-Type: text/plain\r\n\r\n'; for N in $(seq 1 5); do printf '%d\r\n' "$N"; sleep 2; done ) | nc -q 0 -l -p 2000

Ale zdá se, že moderní webové prohlížeče nějak nechtějí vykreslovat odpověď průběžně (není případ linksu nebo telnetu). A chunked režim, kde se prohlížeče chytají, se mi nechce implementovat (ale třeba Apache jej pro CGI používá automaticky).

5.2.2013 23:37 Radovan Garabik
Rozbalit Rozbalit vše Re: Přímý výpis do html jako v konzoli
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ak som dobre pochopil o čo ide, tak stačí v cgi skripte (alebo kde to je) flushnúť stdout po každom výstupe - napr. v pythone sys.stdout.flush()

(nebude to celkom dobre fungovať s komprimovaným Content-Encoding, ale to asi nie je dôležité)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.