Autor | Zpráva | ||
---|---|---|---|
stepanka Profil * |
#1 · Zasláno: 9. 12. 2011, 11:41:47
Ahoj,
uměl by mi někdo prosím poradit? Potřebovala bych mít ve skriptu něco ve stylu: if (uživatel odeslal furnulář) { // zde se provede milion věcí // pokud jsme úspěšně došli až sem, spusť skript na pozadí } Jde o to, že na tom pozadí se spouští konverze videa a většinou to pár minut trvá. A já nechci, aby uživatel čekal a díval se, jak se mu v prohlížeči točí kolečko. Když ten skript spustím přes include/require, tak se tak děje. Vím, že by to šlo řešit cronem, ale právě se ho chceme zbavit. Je zbytečné spouštět tu konverzi pravidelně, když se to může spouštět na akci uživatele (odeslal fomurlář). Moc děkuju za případné rady. |
||
DoubleThink Profil * |
#2 · Zasláno: 9. 12. 2011, 12:20:20
Už z principu to takto nejde. HTTP požadavek je bezstavová synchronní operace, nemůže se v jednom bodě rozdvojit. Paralelní vlákno musíš vytvořit už na straně uživatele – typicky AJAXem nebo pomocí <iframe>.
|
||
Alphard Profil |
#3 · Zasláno: 9. 12. 2011, 12:35:58
Snad by šlo přesměrovat uživatele na další stránku a nechat doběhnout konverzi videa.
|
||
DoubleThink Profil * |
#4 · Zasláno: 9. 12. 2011, 12:50:29
Alphard:
„Snad by šlo přesměrovat uživatele na další stránku a nechat doběhnout konverzi videa.“ I tak ale potom bude muset klient ověřovat nějakým AJAXovým pollingem, jestli už je proces hotový. |
||
Davex Profil |
#5 · Zasláno: 9. 12. 2011, 12:54:16 · Upravil/a: Davex
Šlo by spustit přes HTTP jiný skript (pomocí cURL,
file_get_contents nebo jen get_headers ), který by se ihned odpojil a díky zapnutému ignore_user_abort(true) by na pozadí udělal svou práci. Příklady použití jsou třeba mezi komentáři v dokumentaci funkce register_shutdown_function() .
|
||
stepanka Profil * |
#6 · Zasláno: 9. 12. 2011, 17:15:10
Moc vám všem děkuju, zkusila jsem všechny způsoby, co píšete, ale skončila jsem u Ajaxu, tím to šlo nejlíp.
Ještě jednou díky. |
||
Časová prodleva: 12 let
|
0