Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: dobes 30. 04. 2012, 09:39:53

Název: PHP čas běhu funkce
Přispěvatel: dobes 30. 04. 2012, 09:39:53
Zdravím,

mám PHP skript (pracuji na windows), který pomocí funkcí get_headers a pomocí fsockopen zjišťuje existenci určitých url adres. Problém ale nastává tehdy, když chci zjistit postupně více takových url. například: postupně zkouším www.seznam.cz, www.google.com, www.blablabla.cz, www.root.cz. Ty url, na které se funkce get_headers dostane, tak ty běží v pohodě, ale pokud příjde na řadu nedostupná url, tak zabere celý zbytek času běhu skriptu.

Prosím nenašel by se někdo, kdo by mi poradil jak nastavit čas, kdy by se funkce např. po sekundě ukončila a pokračovala dál?

Mockrát děkuji.
Název: Re:PHP čas běhu funkce
Přispěvatel: aaaaaaaaaaaa 30. 04. 2012, 09:48:32
Co posledny parameter u fsockopen?
Název: Re:PHP čas běhu funkce
Přispěvatel: dobes 30. 04. 2012, 12:25:08
To je právě ten problém, že tento parametr nefunguje. No a jak jsem se na nejrůznějších fórech doečetl, tak asi nefunguje nikomu. Nejde tento problém vyřešit nějakým jiným způsobem?

Děkuji
Název: Re:PHP čas běhu funkce
Přispěvatel: dobes 30. 04. 2012, 12:35:13
resp. funguje, ale pouze pokud dojde ke spojení prostřednictvím funkce fsockopen, ale já bych potřeboval aby daná funkce jen zkontrolovala třeba na sekundu danou url a když nic nenajde, tak se přeruší a začne vykonávat další kontrola.
Název: Re:PHP čas běhu funkce
Přispěvatel: Jan Ťulák 30. 04. 2012, 12:47:45
Hmm... máte povolení spouštět z php příkazy systému? Ping by to řešil.... :D
Název: Re:PHP čas běhu funkce
Přispěvatel: Mirek 30. 04. 2012, 13:03:43
tak pokud nefunguje správně parametr u fsockopen co třeba použít curl ?
Název: Re:PHP čas běhu funkce
Přispěvatel: dobes 30. 04. 2012, 13:38:50
ping i curl jsem zkoušel a je to to stejné, když zadám nesmyslnou url, tak stejně čeká celou dobu do konce vykonávání skriptu.
Název: Re:PHP čas běhu funkce
Přispěvatel: rooobertek 30. 04. 2012, 13:54:33
http://www.php.net/manual/en/function.stream-set-timeout.php
http://www.php.net/manual/en/function.stream-context-create.php
Název: Re:PHP čas běhu funkce
Přispěvatel: to je jedno 30. 04. 2012, 15:02:59
to se mi nezda ze by curl neumel omezit cas...
Název: Re:PHP čas běhu funkce
Přispěvatel: dobes 30. 04. 2012, 15:20:22
stream_set_timeout jsem zkoušel taky, ale funguje stejně jako timeout u fsockopen, takže až po připojení. curl má taky několik timeoutů, ale ani jeden mi nefungoval, tak nevim.
Název: Re:PHP čas běhu funkce
Přispěvatel: tadeas 30. 04. 2012, 16:48:15
CURLOPT_CONNECTTIMEOUT The number of seconds to wait while trying to connect. Use 0 to wait indefinitely.

Tohle nefunguje? Postni sem kdyžtak kód..
Název: Re:PHP čas běhu funkce
Přispěvatel: dobes 30. 04. 2012, 17:11:39
Kód: [Vybrat]
for( $i = 0; $i < 10; $i++ ) {
      $ch     = curl_init("www.blablablablabla.cz");
      curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            echo "od: ".date('g:i:s', time()) . "</br>";

      $buffer = curl_exec($ch);
      if( !$buffer ) {
        echo "neni</br>";
      } else {
        echo "je</br>";
      }
      curl_close($ch);
      echo "do: " . date('g:i:s', time()) . "</br>";
    }

tak tady je kod. Co jsem vypozoroval je, že se jedna url adresa testuje vždy 12 vteřin a já potřebuju nejlépe 1 vteřinu :-(
Název: Re:PHP čas běhu funkce
Přispěvatel: tadeas 30. 04. 2012, 17:24:47
Mně to selže okamžitě (nejspíš rovnou na DNS):
Kód: [Vybrat]
od: 3:23:38</br>neni</br>do: 3:23:38</br>
od: 3:23:38</br>neni</br>do: 3:23:38</br>
od: 3:23:38</br>neni</br>do: 3:23:38</br>                                                                                                                                                           
od: 3:23:38</br>neni</br>do: 3:23:38</br>                                                                                                                                                           
od: 3:23:38</br>neni</br>do: 3:23:38</br>                                                                                                                                                           
od: 3:23:38</br>neni</br>do: 3:23:38</br>                                                                                                                                                           
od: 3:23:38</br>neni</br>do: 3:23:38</br>                                                                                                                                                           
od: 3:23:38</br>neni</br>do: 3:23:38</br>                                                                                                                                                           
od: 3:23:38</br>neni</br>do: 3:23:38</br>                                                                                                                                                           
od: 3:23:38</br>neni</br>do: 3:23:38</br>     

Zkoušel jsi to pouštět v konzoli?
Název: Re:PHP čas běhu funkce
Přispěvatel: dobes 30. 04. 2012, 18:21:42
tak už to jede, hned při spuštění příkazové řádky mi to hodilo chybu knihovny php_curl.dll. Tu jsem opravil a už to vypadá, že funguje. Díky moc za rady ;)
Název: Re:PHP čas běhu funkce
Přispěvatel: Mirek 30. 04. 2012, 19:25:46
tak když to máš na svém PC, tak si v PHP zapni logování do souboru (nejlépe všech chyb) a tam si ty chyby kontroluj...
Název: Re:PHP čas běhu funkce
Přispěvatel: citanus 30. 04. 2012, 23:45:17
http://php.vrana.cz/paralelni-zpracovani.php