Autor Zpráva
jan99
Profil *
Ahoj, da se nejak spustit curl bez toho aby cekal na odpoved ze vzdaleneho serveru??

bude fungovat neco takoveho? exec("curl -d $params $url > /dev/null 2>&1");

Dam priklad:

Chci vypsat echo "AHOJ"; a v kodu to bude vypadat nejak takto:

-----------
curl();
echo "AHOJ";
------

AHOJ se vypise az potom co bude nejaka odezva z funkce curl a ta muze treba trvat 3s nebo dele pokud vzdaleny server bude treba pretizeny. Takze prakticky se jedna o to aby se vystupy vypsaly hned a ten curl se provedl "na pozadi". Taky by to melo fungovat tim zpusobem ze kdyz uzivatel zavre okno prohlizece a curl data jeste nebyly uplne odeslany tak by se meli "na pozadi" na serveru vklidu dokoncit (odeslat).

Diky
Keeehi
Profil
Aby to běželo paralelně, musíš vytvořit druhý proces. Na to slouží funkce pcntl_fork.
//kód před curl

$pid = pcntl_fork();
if ($pid == -1) {
     die('could not fork');
} else if (!$pid) {
    //curl
    exit;
}

//kód po curl

pcntl_wait($status); //Protect against Zombie children
jan99
Profil *
Keeehi:
Ahoj, diky za odpoved, zkusim jestli to bude fungovat.

pokud to mam jako posledni funkci co se ma vykonat pred ukoncenim celeho php scriptu tak to mam napsat takto?:

function posledni_funkce{

$pid = pcntl_fork();
if ($pid == -1) {
     die('could not fork');
} else if (!$pid) {
    //curl
    exit;
}
 
//kód po curl
 
pcntl_wait($status); //Protect against Zombie children
}

PS ten exit() ktery je nad pcntl_wait($status); je tam spatne ne? nic pod exitem se uz nevykona.. (?)


a bude jeste fungovat kdyz na zacatek funkce dam set_time_limit(10); ??
Keeehi
Profil
jan99:
PS ten exit() ktery je nad pcntl_wait($status); je tam spatne ne? nic pod exitem se uz nevykona.. (?)
Zjistěte si info o paralelním programování, o vytváření dvou procesů z jednoho a pochopíte to. Ale být tam má a je tam správně.

set_time_limit
Lepší bude u curl nastavit CURLOPT_CONNECTTIMEOUT na 10.

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