Autor | Zpráva | ||
---|---|---|---|
Pavlínka Profil |
#1 · Zasláno: 15. 2. 2018, 12:19:39
momentálně na otevření odkazu používám toto:
$url='http://127.0.0.1/spust/exec.spust.php'; $ch=curl_init(); $timeout=1; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $result=curl_exec($ch); curl_close($ch); problém je že potřbuji stránku načíst a po vteřině vypnout načítání aby se načetl další script níže... děkuji za rady |
||
Keeehi Profil |
#2 · Zasláno: 15. 2. 2018, 12:44:00
CURLOPT_TIMEOUT Předpokládám, že soubor exec.spust.php je nějaký dlouho běžící skript a ty ho chceš jen spustit a nečekat než doběhne. Pokud je to tak, tak existuje způsob, jak poslat ihned odpověď, takže zdroj volání nemusí čekat na doběhnutí scriptu, zatímco skript běží dál. ignore_user_abort(true); set_time_limit(0); ob_start(); // do initial processing here echo $response; // send the response header('Connection: close'); header('Content-Length: '.ob_get_length()); ob_end_flush(); ob_flush(); flush(); Pokud tedy můžeš ten soubor upravit, je lepší tato varianta než čekat na timeout. Navíc toto může být rychlejší, protože se skript pošle odpověď hned a nemusí se vteřinu čekat. |
||
Pavlínka Profil |
#3 · Zasláno: 15. 2. 2018, 12:51:31
no jenže toto utne script celé sctránky...
exec.spust.php spustí něco co běží dlouho a hned po spuštění scriptu je další script který zobrazuje to co exec.spust.php spustil... také "dlouho" to co jsi poslal ty předpokládám uknčí scripty všechny nikoli jen načtenou stránku?? :/ a pokud je to myšleno do souboru exec.spust.php, neukončí se tím náhodou příkaz shell_exec který v něm je? pak by se utnul script a bylo by to také o ničem |
||
Keeehi Profil |
#4 · Zasláno: 15. 2. 2018, 13:19:28
Pavlínka:
„a pokud je to myšleno do souboru exec.spust.php“ Přesně tam je to myšleno. „neukončí se tím náhodou příkaz shell_exec který v něm je?“ Ne. V jednom projektu jsem používal takovouto konstrukci právě ve spojení s dlouho-běžícím shell příkazem, kde jsem potřeboval hned na začátku odeslat informaci, že se příkaz spustil. Ihned potom ukončit spojení ale nechat běžet příkaz dál. Bohužel k přesné konstrukci teď nemám přístup, ale bylo to něco na tento způsob. |
||
Pavlínka Profil |
noooo..
ignore_user_abort(true); set_time_limit(0); ob_start(); shell_exec("....kodik..."); header('Connection: close'); header('Content-Length: '.ob_get_length()); ob_end_flush(); ob_flush(); flush(); a stránka se stejně načítá týden :D takže nepomohlo... asi bych ráda byla u toho ukončení na straně načítání url :D |
||
Keeehi Profil |
#6 · Zasláno: 16. 2. 2018, 03:11:23
Pavlínka:
shell_exec samozřejmě musí být až na konci. Jelikož je to blokující funkce, tak nejdříve musíš ukončit přenos dat k uživateli (tomu scriptu co to volá) a pak můžeš teprve volat ty dlouho běžící funkce. |
||
Pavlínka Profil |
#7 · Zasláno: 16. 2. 2018, 09:32:01
aha nojo no :D děkuji :)
|
||
Časová prodleva: 6 let
|
0