Autor Zpráva
tatyalien
Profil
Dobrý den,
chci se zeptat mám index, kde mám tlačítka na spouštění různých skriptů, po vybrání skriptu se přesunu na stránku se skriptem, ale ta stránka může pracovat třeba 2min (mám povolenej na to čas, dělám to u sebe) je to program na aktualizaci skladových zásob na webu, který načítá ceníky atd, ale problém mám s tímto:

1) kliknu na tlačítko na indexu
2) tlačítko zmizne, zůstane vidět index
3) jakmile skript skončí zobrazí se výsledek (jen pro info jeslti se neco nepotentovalo, uloží se to do sesion a mám možnost vrátit se zpět - to jsem chtěl.

Můj dotaz je jak udělat že mezi bodem 1-2 bude prekliknutí na další stránku, kde bude informovanej uživatel o tom že se něco dělá. jeslti mám udělat nejdřív odkaz na stránku s textem a tam nějak na dálku spustit skript?
Joker
Profil
tatyalien:
Šlo by před začátkem akce vypsat tu "načítací" stránku a po skončení akce udělat přesměrování.
Pokud nebude zapnuté output buffering nebo tak něco.

edit: No, přesměrování asi ne, protože nepůjde poslat hlavičku... ale dá se dopsat nějaký odkaz nebo informace nebo tak něco.
tatyalien
Profil
No já chtěl přesměrovat, ale pokud tam už vypíšu nějaké echo tak to nejde....

Proto jsem myslel, že by bylo něco jako stránka s textem skript pracuje bla bla, a aby se na pozadí spustil skript, ale to je asi nereálné, nechci pak zase aby uživatel musel kliknout na tlačítko a pak znova na odkaz...
AM_
Profil
Dalo by se to řešit AJAXem, který by nějakým způsobem kontroloval, jak je na tom onen skript (např. skript by ukládal svůj stav do souboru s nějakým unikátním názvem, pro případ více paralerních spuštění, a ajax by skrz nějaké PHP vyzvedával status z tohoto souboru).
tatyalien
Profil
AJAX neznám, nastuduji....
takže není nějaká možnost aby se zobrazila stránka s textem a spustil skript po vypsání echa? Pak by tam aspoň byl vidět ten text a ne uvodní menu :-D
Alphard
Profil
tatyalien:
takže není nějaká možnost aby se zobrazila stránka s textem a spustil skript po vypsání echa?
Je, docela jednoduchý. Mělo by stačit normálně vypsat echo "test" a na závěr výpisu dát ob_flush(). Text se odešle prohlížeči a script bude pracovat dál, pak můžete dále vypisovat pomocí echo.
Problém je ale v tom, že servery mají často nastavený ještě další buffer, který odesílá až po několika kB (odhadem, nevím), a s tím nic moc neuděláte, maximálně můžete do stránky skrýt nějaký dlouhý a zbytečný kód, avšak moc pěkné řešení to není.
tatyalien
Profil
Alphard:
Díky, tak jsem to vyřešil sice krkolomě, dodám tohle do skryptu, který trvá déle, hned na začátek:
	ob_start();
	echo "Skript pracuje... Bude to trvat o něco déle.<br>\n";
	ob_flush();
	flush();


a jakmile skrypt doběhne zobrazí se jim výsledek. ještě jednou díky.
Joker
Profil
tatyalien:
Proč se tam používá output buffering? Bych řekl, že jen s echo by to fungovalo stejně.

Mmch:
skrypt
Nějaký důvod k té náhlé změně pravopisu?
tatyalien
Profil
Joker:
Ne jsem se upsal a jsem dislektik tak pardon za chybku :-D
Nevím takhle jsem to našel na webu a funguje to. Samozřejmně, že jsem ještě línej a hodil jsem si to do funkce ať to nepíšu furt do kola ;)

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: