Autor |
Nachricht |
qualidat
Threadersteller
Dabei seit: 14.09.2006
Ort: Eichwalde bei Berlin
Alter: 63
Geschlecht:
|
Verfasst Sa 21.09.2013 13:17
Titel PHP-Problem: Bild von IP-Kamera abgreifen |
|
|
Ist bitte mal jemand so freundlich und prüft, warum dieser eigentlich simpelst abgesicherte Code trotzdem hin und wieder (ca. 10% der Aufrufe) ein nicht darstellbares Bild produziert? Der Browser meint dann sinngemäß, die Grafik könne nicht dargestellt werden, weil sie Fehler enthalte. Ich weiss, dass der Code nicht gegen eine Endlosschleife angesichert ist, kommt noch. Der Fehler, den ich meine, kommt, wenn er kommt, sofort.
Code: | <?php
$err=true;
while ($err)
{
$dat = file_get_contents('http://admin:passw@192.168.200.101/snapshot.cgi');
if ($dat)
{
$img = imagecreatefromstring($dat);
if ($img)
{ $err=false;
header('Content-Type: image/jpeg');
imagejpeg($img);
imagedestroy($img);}
else {usleep(200);}
}
else {usleep(200);}
}
?> |
Das würde ja bedeuten, dass man sich auf $img = imagecreatefromstring($dat); if ($img) ... nicht verlassen kann ... ?
Zuletzt bearbeitet von qualidat am Sa 21.09.2013 13:31, insgesamt 4-mal bearbeitet
|
|
|
|
|
remote
Dabei seit: 10.11.2006
Ort: /var/www/
Alter: 110
Geschlecht:
|
Verfasst Sa 21.09.2013 13:35
Titel
|
|
|
debugger anknipsen und nachgucken was in $dat und $img steckt wenn der fehler auftritt.
in den logs steht ja vermutlich nichts, oder?
alternativ den var inhalt nebst bilddatei auf die platte schreiben - dann hast du gleich mehrere samples.
|
|
|
|
|
Anzeige
|
|
|
qualidat
Threadersteller
Dabei seit: 14.09.2006
Ort: Eichwalde bei Berlin
Alter: 63
Geschlecht:
|
Verfasst Sa 21.09.2013 14:31
Titel
|
|
|
Jaaaa ... das Problem hat sich geklärt.
"Schuld" war die Funktion "imagecreatefromstring", denn die hat bei korrupten Bilddaten nicht nur ein False geliefert - was ich ja abfange - sondern zusätzlich einen Fehlertext. Der wurde dann brav mit einem Imagehaeder versehen und ausgegeben ... mrgs.
Das Problem wurde durch ein vorangestelltes "@" unterbunden ...
Zuletzt bearbeitet von qualidat am Sa 21.09.2013 14:32, insgesamt 2-mal bearbeitet
|
|
|
|
|
bacon
Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Sa 21.09.2013 19:06
Titel
|
|
|
machs doch gleich richtig und benutze is_resource() oder den strikten vergleichsoperator ===
irgendwann buch ich mal ne Schulung bei Dir...
|
|
|
|
|
qualidat
Threadersteller
Dabei seit: 14.09.2006
Ort: Eichwalde bei Berlin
Alter: 63
Geschlecht:
|
Verfasst Sa 21.09.2013 19:34
Titel
|
|
|
bacon hat geschrieben: | machs doch gleich richtig und benutze is_resource() oder den strikten vergleichsoperator ===
irgendwann buch ich mal ne Schulung bei Dir... |
"is_resource()" ist echt ein Vorschlag, werde ich probieren ... wobei - das Problem ist ja gelöst.
Aber was soll ich bitte in dem Code "strikt" womit vergleichen?
|
|
|
|
|
bacon
Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst So 22.09.2013 10:36
Titel
|
|
|
file_get_contents bspw. liefert FALSE im Fehlerfall zurück. Funktioniert der callout durch den streamwrapper, liefert aber einen emptystring "" zurück, oder "0" oder whatever, ist nicht zu unterscheiden, ob der Webservice nur nicht funktioniert hat, oder ob die Rückgabe eben leer, 0 oder sonst was ist -- das PHP Typesystem ist ja bekanntlich mehr als kaputt.
ein
if(false === ($contents = file_get_contents())
ist also immer einem if($contents = file_get_contents())
vorzuziehen.
|
|
|
|
|
|
|
|
Ähnliche Themen |
[CSS] Div 100% Höhe und BG-Bild - Problem
IE-Problem - Bild 100% hoch
[FLASH MX] Problem mit Bild-Navigation
Illustrator CS3 Bild/Schnittmasken Problem
DIV Problem: Text neben Bild
Illu Cs2 Problem mit gezeichnetem Bild
|
|