Logdatei quillt über

Hallo liebe Leute!

Ich habe in den letzten Tagen immer wieder mal ein Phänomen mit dem Laden von Bildern aus dem Web.

Folgender Code (auch hier aus dem Forum) lädt ein Bild vom Regenradar.

//regenradar
$remoteImage = "http://www.zdf.de/ZDFde/wetter/showpicture/0,2236,161,00.gif";
$remoteFile = fopen("$remoteImage",'rb');
$localImage = "D:\IPS\Wetter_Pics/regenradar.gif";
$localFile = fopen($localImage,'wb');
echo "RemoteFile (regen): ".$remoteFile."
";
while (!feof($remoteFile)) {
  $chunk = fread($remoteFile,1024);
  fwrite($localFile,$chunk);
}
fclose($localFile);
fclose($remoteFile);

Das hat über ein halbes Jahr auch einwandfrei geklappt. Aus irgendeinem Grund schlägt es in letzter Zeit öfter mal fehl. IPS schreibt dann ununterbrochen Fehler ins Log. Es lässt sich nur durch den Taskmanager beenden. Im Log steht dann was von Verbindungsversuch fehlgeschlagen.

  1. Woran kann das liegen.

  2. Kann man mit try/catch den Fehler abfangen? Wenn ja, wo finde ich was über die Fehlerbehandlung von solchen Befehlen?

Ich hänge mal einen Ausschnitt der Logdatei als zip mit an.

Gruß
Fabian

log.zip (698 Bytes)

Hast du mal manuell nachgesehen, ob es dieses Bild überhaupt noch auf der Webseite gibt?
Copy/Paste einfach mal den direkten link in einen Webbrowser. Wenn dann da kein Bild erscheint, ja dann gibt es das Bild einfach nicht mehr. Dann muss du hier einen neuen Link eingeben.

mfG Franz

Das habe ich sofort als erstes getestet.

Es geschieht ja auch nicht immer (wird alle 15min ausgeführt). Aber in letzter Zeit mindestens einmal am Tag.

Ach und was mir schon ein paar mal aufgefallen ist:
Nachdem ich IPS mit dem Taskmanager beendet habe und wieder neu gestartet, läuft alles wieder ganz normal, bis auf einen Fehler. IPS meldet beim Start, dass der Designer Port nicht geöffnet werden kann.

Fabian

Hat noch jemand eine Idee zum Error-Handling?

Fabian

Man kann das mit error-reporting() einstellen oder über die Ini-Dateien defaultmäßig. In diesem Fall würde ich aber testen, ob das fopen fehlschläglt und
ein „@“ vor die betreffende Function setzen, also @fopen(um die Warnung beim Fehler auszublenden), und dann erst mit dem Leseteil weitermachen.

Tommi

Wenn, IPS per Taskmanager beendet werden muss, dann bleibt RDDTool.exe auch im Speicher hängen. Dann beim Neustart wird IPS den Designer nicht mehr starten wollen.
Deshalb: Beim Beender von IPS per Taskmanager bitte auch RDDTool.exe beenden, auch per Taskmanager.
Dann Neustart von IPS, und alles geht wieder

mfG Franz

Hallo,
danke für Eure Tips.

Das mit dem error-reporting() hatte ich schon gefunden. Allerdings konnte ich damit nicht so richtig umgehen. Mir fehlt die Möglichkeit die Fehler abzufangen/abzufragen. Für Hinweisen dazu bin ich natürlich dankbar. Werde mir’s auch nochmal ansehen.

Ich habe im Moment folgende Lösung in Gebrauch:

function exceptions_error_handler($severity, $message, $filename, $lineno)
{
   throw new ErrorException($message, 0, $severity, $filename, $lineno);
}
set_error_handler('exceptions_error_handler');

Damit kann man Fehlermeldungen in eine Exception umleiten, welche dann mit try/catch behandelt werden kann.

Zum Thema Designer Port:

Beim Beender von IPS per Taskmanager bitte auch RDDTool.exe beenden, auch per Taskmanager.
Dann Neustart von IPS, und alles geht wieder

Gut zu Wissen, man lernt eben nie aus.

Fabian