Autor Zpráva
Pavlínka
Profil
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
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
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
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
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
aha nojo no :D děkuji :)

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: