Autor Zpráva
ash
Profil
Mám formulár a skript ktorý spracováva vstup z formulára.
Skript je dosť náročný na čas, a tak po stlačení ODOSLAŤ to pre neskúseného užívateľa vyzerá akoby browser nereagoval.

Potrebujem vypísať potvrdenie prijatia a riešim to takto:

<html>
<head>
</head>

<body>
<?
for($i = 0; $i < 40000; $i++) {
echo ' '; // extra medzery kvôli bufferu browsera
}
echo 'Zaznamenávam Vašu požiadavku, prosím čakajte.';
ob_flush();
flush();

... náročný skript
... vypísanie výsledkov skriptu
?>

</body>
</html>


Tento postup mi funguje v IE ale nefunguje vo FF.
Máte niekto skúsenosti, ako to vyriešiť vo Firefoxe?
llook
Profil
Možná by stálo za pokus ty mezery vypisovat až za tím vypsáním toho oznámení.
printf
Profil *
možná jsem to nepochopil, ale co postupovat takhle:
- nejdřív vygenerovat náhodné číslo
- poslat klientovi stránku "Vyřizuji požadavek" která se za nějaký čas reloadne a předá skriptu to náhodné číslo
- po vypsání konce té první stránky (stránka by se měla již zobrazit) začít zpracovávat skript, který by výsledek vyplivl do souboru s názvem daným tím náhodným číslem a tím by skončil
- následně by došlo k reloadu, na což by znovu spuštěný skript reagoval nalezením souboru s tím náhodným číslem a jeho vypsáním klientovi

Něco podobného mají na czfree.net při přihlašování nebo hledání, ale nevím jak to tam řeší.
ash
Profil
llook
Možná by stálo za pokus ty mezery vypisovat až za tím vypsáním toho oznámení.

Za pokus to stálo, ale nepomohlo. Firefox stále Flush() ignoruje a čaká s výpisom do konca skriptu.


printf
Zaujimavy napad, refresh mi neprišiel na um.

Nepochopil som celkom ten zvyšok, ale snáď by to šlo takým dvojkolovým skriptom:
1. premenné z formulára zapíšem napr. do Session a dám echo 'čakajte'
REFRESH
2. zistím, že už existujú premenné v Session a spracujem ich - zatiaľ je na obrazovke 'čakajte', kým nedobehne skript

Ak nerozbehnem ten Flush(), skúsim túto cestu.
printf
Profil *
Já myslím že Firefox nečeká na konec skriptu, ale na konec HTML. Jestli čeká na konec souboru, tak by se mu mohl poslat znak EOF, ale to asi není ono.
ash
Profil
Já myslím že Firefox nečeká na konec skriptu, ale na konec HTML.

ak myslíš </html>, tak nie, to som vyskúšal ako prvé.

Aj IE (kde mi flush() funguje spoľahlivo) sa správa tak, že keď dám flush() až za </html>, vypíše celú stránku, ale nereaguje na kliky, kým nedobehne celý skript, aj v prípade, že ten skript už nič ďalšie na stránku nevypisuje.
Toto téma je uzamčeno. Odpověď nelze zaslat.