[PHP] Timeout instellen...

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • om3ega
  • Registratie: Maart 2001
  • Laatst online: 00:11
Ik heb een probleem.

Doormiddel van het file_get_contents commando haal ik informatie op van een externe website.

Omdat ik een virtual domain name nodig heb kan ik geen IP nummer gebruiken.

PHP:
1
2
$site = "http://virtualhost.domain.com/information.php";
$string = @file_get_contents($site);


Maar , zodra de server waar dit op draait de DNS even kwijt is , of de website virtualhost.domain.com down is duurt het >45 seconden voordat hij time-out geeft.

(Met achterliggende gevolg dat de rest van de website stil staat .... en het lijkt alsof de website waar het script op uitgevoerd wordt dood is)


Eigenlijk wil ik dit verkorten naar 2 seconden. Simpel dacht ik , ik kijk even in de manual. Maar je raadt het al.. de opties die omschreven staan werken niet :( (Of ik hanteer ze verkeerd?

Ik vond deze funktie

socket_set_timeout -- Alias of stream_set_timeout()

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$fp = fsockopen("www.example.com", 80);
if (!$fp) {
   echo "Unable to open\n";
} else {
   fputs($fp, "GET / HTTP/1.0\n\n");
   stream_set_timeout($fp, 2);
   $res = fread($fp, 2000);
   var_dump(stream_get_meta_data($fp));
   fclose($fp);
   echo $res;
}
?> 


Ik heb bovenstaande voorbeeld als volgt gebruikt :


PHP:
1
2
3
$site = "http://virtualhost.domain.com/information.php";
$string = @file_get_contents($site);
stream_set_timeout($string, 2);


Maar dit werkt dus niet. De alias ook niet. Ik ben gebonden aan de file_get_contents funktie. Dus ik kan geen fsockopen gebruiken (daar het achterliggende programma dan op de schop moet)

Iemand een ideetje?

[ Voor 11% gewijzigd door om3ega op 09-04-2004 19:00 . Reden: Verduidelijking ]


Acties:
  • 0 Henk 'm!

  • satyriasis
  • Registratie: Januari 2000
  • Laatst online: 19-09 14:37
hmm met een beetje simpel zoekwerk had je dit ook kunnen vinden :(

voordat je file_get_contents doet:

PHP:
1
ini_set("max_execution_time","5");


en daarna:

PHP:
1
ini_set("max_execution_time","30");

Acties:
  • 0 Henk 'm!

  • om3ega
  • Registratie: Maart 2001
  • Laatst online: 00:11
Bedankt voor je antwoord.. maar heb je een linkje naar php.net waar dit staat? Ik baal ervan dat ik dit dus niet heb gevonden..

Acties:
  • 0 Henk 'm!

  • satyriasis
  • Registratie: Januari 2000
  • Laatst online: 19-09 14:37
http://www.php.net/ini_set

TIP: typ achter www.php.net/ je commando ( bijv. print of mysql_connect ) en je krijgt meteen de goede pagina

Acties:
  • 0 Henk 'm!

  • om3ega
  • Registratie: Maart 2001
  • Laatst online: 00:11
Ok bedankt,

Ik zat dus gewoon in de verkeerde richting te zoeken. Ik dacht dat het met socket time out te maken had :) ..