Autor | Zpráva | ||
---|---|---|---|
jan99 Profil * |
#1 · Zasláno: 26. 7. 2012, 17:34:07
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 |
#2 · Zasláno: 26. 7. 2012, 17:47:09
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 * |
#3 · Zasláno: 26. 7. 2012, 19:09:12 · Upravil/a: jan99
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 |
#4 · Zasláno: 26. 7. 2012, 19:34:17
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. |
||
Časová prodleva: 12 let
|
0