Komisches Verhalten bei http_get

Hallo Leute,

ich beobachte ein komisches Verhalten bei dem Befehl http_get. Der Skript funktioniert ein lange Zeit (Stunden, Tage) ohne Probleme. Irgendwann liefert der Befehl ein „False“ zurück. Beende ich dann den IPS-Server und starte ihn dann gleich wieder funktioniert der Befehl wieder (Stunden, Tage) ohne Probleme!
Wie kann es zu solch einem Verhalten kommen?:confused:

Joachim

Hallo Leute,

heute wieder das Gleiche: Skript lief offenbar bis 6:30 Uhr - Fehlermeldung. Jetzt IPS neu gestartet - läuft sofort wieder…:frowning:

Hier mal der Code:

<?

$AktuellerWochentag = GetValueInteger(37151 /*[Sonstige Daten\Variablen\Sonstige Variablen\Aktueller Wochentag (Nr)]*/ );
$AktuelleKalenderwoche = GetValueInteger(36714 /*[Sonstige Daten\Variablen\Sonstige Variablen\Kalenderwoche des Jahres]*/ );

If (($AktuellerWochentag >= 1) and ($AktuellerWochentag <= 5))
	{
	$ModKalenderwoche = $AktuelleKalenderwoche;
	}
else
	{
	$ModKalenderwoche = $AktuelleKalenderwoche + 1;
	}
//Echo $AktuellerWochentag." ".$AktuelleKalenderwoche." ".$ModKalenderwoche;

$Antwort = http_get("....link....", array("connecttimeout"=>2));

If ($Antwort == False)
{
	SetvalueString(34075 /*[BRGS\Stundenplan]*/ , "Es ist ein Fehler aufgetreten!");
	echo $Stundenplan;
}
else
{
	$StundenplanArray = get_mark($Antwort, "</head>*</TR></TABLE><TABLE");
	$Stundenplan = $StundenplanArray[0];
	$Stundenplan = str_Replace('color="#000000"', '', $Stundenplan);
	$Stundenplan = str_Replace('color="#FF0080"', '', $Stundenplan);
	$Stundenplan = str_Replace('bgcolor="#FFFFFF"', '', $Stundenplan);
	$Stundenplan = str_Replace('border="3"', 'border="1"', $Stundenplan);
	$Stundenplan = str_Replace('Arial', GetValueString(32181 /*[Server\Einstellungen\Webfront Einstellungen\Schriftart]*/ ), $Stundenplan);

	SetvalueString(34075 /*[BRGS\Stundenplan]*/ , $Stundenplan);
   $Datum = GetValueString(23632 /*[Sonstige Daten\Variablen\Sonstige Variablen\Aktuelles Datum]*/ );
	$Uhrzeit = GetValueString(37001 /*[Sonstige Daten\Variablen\Sonstige Variablen\Aktuelle Uhrzeit]*/ );
	SetValueString(33832 /*[BRGS\Letzte Aktualisierung]*/ , $Datum." ".$Uhrzeit);

	$Kalenderwochenbeginn = date("d.m.Y", getKW($ModKalenderwoche, date("Y")));
	$Kalenderwochenende = date("d.m.Y",(strtotime("+7 day", strtotime($Kalenderwochenbeginn))));
	SetValueString(23148 /*[BRGS\Kalenderwoche]*/ , $Kalenderwochenbeginn." - ".$Kalenderwochenende);

	echo $Stundenplan;
}
return;

// Diese Funktion trennt die relevanten Bereiche aus dem Ausschnitt heraus $string ist dabei der zu durchsuchende Gesamtstring,
// in $Mark sind durch "*" getrennt der Beginn des zu suchenden Strings und das Ende des zu suchende Abschnittes. Beispiel für den Text "<div>*</div></li>"
function get_mark($string,$mark)
{
    $ausgabe = array();
    $template = explode("*",$mark);
    $mark = $template[0];
    $end = $template[1];
    $string = strstr($string,$mark);

    $temp = explode($mark,$string);
    $a = 1;
        foreach ($temp as $tempx)
                    {
                    $tempx = explode($end,$tempx);
                    $tempx = $tempx[0];
                    if ($tempx)
                            {
                            array_push ($ausgabe,$tempx);
                            }
                    }
    return $ausgabe;
}

// Diese Function ermittelt den ersten Montag des Jahres für den Beginn der ersten Kalenderwoche (kann auch im Vorjahr liegen!)
function firstMonday($year = null)
{
	if(is_null($year)) $year = date("Y");
	$date = mktime(0,0,0,1,4,$year);
	return mktime(0,0,0,1, date("d", $date) + (date("w", $date) == 0 ? -6 : (1 - date("w", $date))), $year);
}

// Diese Funktion ermittelt den Montag einer bestimmten Kalenderwoche und -jahr
function getKW($kw, $year = null)
{
	if(is_null($year)) $year = date("Y");
	return firstMonday($year) + 604800 * ($kw - 1);
}



?>

Joachim

Hallo Leute,

vielleicht fällt ja doch jemanden etwas dazu ein, wie ich dem Fehler auf die Schliche komme…

Die Fehlermeldung heißt:
„Warning: http_get() [function.http-get]: Timeout was reached; connect() timed out! (…link…) in D:\IP-Symcon\Installation\scripts\BRGSStundenplanLink.ips.php on line 16“

Einmal den IPS-Server neu Starten, funktioniert es wieder sofort…
(Die Lösung kann doch bitte nicht sein, bei Fehlermeldung IPS neu zu starten, oder?:()

Joachim

Hallo Leute,

vielleicht hat ja jemand Interesse an meiner Lösung.
Ich habe

$Antwort = http_get("http://Benutzername:Passwort@...link...", array("connecttimeout"=>2));

ersetzt durch:

$Antwort = file_get_contents("http://Benutzername:Passwort@...link...");

Wie auch immer läuft jetzt seit Wochen stabil…:slight_smile:

Joachim