Autor Zpráva
stepanka
Profil *
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 *
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
Snad by šlo přesměrovat uživatele na další stránku a nechat doběhnout konverzi videa.
DoubleThink
Profil *
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
Š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 *
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0