mod_perl2 a $| = 1
Jan Kasprzak
kas na fi.muni.cz
Pondělí Únor 13 23:41:31 MET 2006
Vladimír Solnický wrote:
: > Jan Kasprzak wrote:
: > : $|=1;
: > : print "Content-Type: application/x-text\n";
: > : print "Content-Length: ", length($data), "\n\n";
: > : print $data;
: > : ModPerl::Util::exit();
: >
: > Jeste dalsim experimentovanim jsem zjistil, ze pokud
: > dam $|=1 az za vypis hlavicek, tak je vse OK. Coz asi pro me bude
: > nejmene bolestne reseni. Ale stejne bych rad vedel co se deje.
:
: Možná jsme jen drzý, že ses píši, protože neumím perl. Ale přečetl jsem si
: man perlvar a podle něj přiřazení do proměnné způsobí okamžité vyprázdnění
: vyrovnávací paměti (tedy se pravděpodobně pošle klientovi něco jako
: "200 ..."
To asi ne - spis si myslim, ze ten STDOUT je tied, a ze zrejme
na FLUSH se v tom mod_perlu zpusobi odeslani hlavicek a vygenerovani stavoveho
kodu nebo tak neco.
-- úvodní řádka na HTTP odpověď) a další řádky se zasílají ihned
: do tisku. Zkusil bych tedy zjistit, co se přesně vytiskne "před" Vašimi
: hlavičkami
On hlavne zasila (vygeneruje) ten stavovy kod, a zasle ho hned pri
prvnim FLUSH, aniz by cekal na dokonceni hlavicek. Mozna je to proste
vlastnost - kdyz uz chci neco na vystup, tak se musi generovat stavovy kod.
: 1) HTTP má podle normy ukončovat řádky CR+LF, tedy \r\n, ne jen \n. To, že
: Vám to funguje, je s podivem.
O tohle se predpokladam stara mod_perl. Rozhodne jsem nikdy nikoho
v Perlu (ani obecne v CGI) nevidel psat \r\n.
: 2) Myslím, že uložení souboru se dá korektně dosáhnout následujícími
: hlavičkami:
:
: Content-Type: text/plain
: Content-Disposition: attachment
:
: (případně uvést parametr charset pro C-T a filename pro C-D; detaily
: v RFC 2045-9):
:
: Content-Type: text/plain; charset=ISO-8859-2
: Content-Disposition: attachment; filename=mojedata.txt
Jo, jasne. Legacy aplikace a tak podobne. Nema cenu to ted resit.
Nove veci uz se delaji s Content-Disposition.
: Top, co požíváte, je těžký háček, protože nutíte prohlížeč k uložení ne
: proto, že to chcete, ale proto, že tvoříte něco, co by prohlížeč neměl
: znát (což také nemusí být pravda, pokud si někdo nastaví tento typ do
: pomocných aplikací).
Jo, ale to uz je jeho vec, ne? :-) Taky si muze nastavit, ze
ve vsech strankach bude A nahrazovat za B. Tohle neni muj problem.
-Y.
--
| Jan "Yenya" Kasprzak <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839 Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/ Journal: http://www.fi.muni.cz/~kas/blog/ |
> Specs are a basis for _talking_about_ things. But they are _not_ a basis <
> for implementing software. --Linus Torvalds <
Další informace o konferenci Perl