mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 29.03.2024 13:34 Benutzername: Passwort: Auto-Login

Thema: PHP: Socket tiemout richtig setzen vom 07.04.2012


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> PHP: Socket tiemout richtig setzen
Autor Nachricht
qualidat
Threadersteller

Dabei seit: 14.09.2006
Ort: Eichwalde bei Berlin
Alter: 63
Geschlecht: Männlich
Verfasst Sa 07.04.2012 09:17
Titel

PHP: Socket tiemout richtig setzen

Antworten mit Zitat Zum Seitenanfang

Ich habe ein PHP-Programm geschrieben, dass Bilddaten aus einer IP-Kamera holt und als img-src für eine ander Webseite bereitstellt. Das ist nötig, weil es sich "nur" um eine Beobachtungskamera mit direkter Bildbetrachtung und nicht um eine vollwertige Webcam mit FTP- oder Webserver handelt. Das gelingt mittels Socket und ein par Datenmanipulationen einwandfrei.
Wenn die Kamera mal nicht online ist, soll statt dessen eine blaue Fläche mit dem Schriftzug "camera offline" erzeugt und ausgeliefert werden. Auch das kein prinzipielles Problem, es funktioniert grundsätzlich, nur dauert es eine Ewigkeit.

Code:

 $camsock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
 socket_set_option($camsock,SOL_SOCKET, SO_RCVTIMEO, array("sec"=>2, "usec"=>2));
 $camcon=@socket_connect($camsock, $camaddr, $camport);
 
 if ($camcon) // Verbindung steht
 {
    // Bilddaten holen und aufbereiten   
 }
 else // Verbindung klappt nicht
 {
    //Grafik erstellen
 }


Obwohl ich den Timeout mit "socket_set_option" verkürzt habe (denke ich), dauert es bis zu 30 Sekunden, bevor ohne Kamera in den Else-Zweig gesprungen wird ... was habe ich falsch gemacht?


Zuletzt bearbeitet von qualidat am Sa 07.04.2012 09:18, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
zweitaccount

Dabei seit: 25.01.2008
Ort: -
Alter: -
Geschlecht: -
Verfasst Sa 07.04.2012 09:40
Titel

Antworten mit Zitat Zum Seitenanfang

Guten Morgen,
läuft das unter Windows oder Linux? Weil
http://php.net/manual/ hat geschrieben:
Setting the socket timeout microseconds ('usec') does not work under Windows, at least under PHP/5.2.9:


Mglw. das der Fehler?

Grüße
zweitaccount
  View user's profile Private Nachricht senden
Anzeige
Anzeige
qualidat
Threadersteller

Dabei seit: 14.09.2006
Ort: Eichwalde bei Berlin
Alter: 63
Geschlecht: Männlich
Verfasst Sa 07.04.2012 09:47
Titel

Antworten mit Zitat Zum Seitenanfang

Zur Zeit teste ich mit XAMPP unter Mac OS X, wenns fertig ist, soll es bei 1und1 laufen ... weiss nicht, unter welchem System deren Server laufen. Dachte immer, PHP sei weitgehend systemunabhängig. Gibts Alternativen, dem Socket die ewige Warterei auszutreiben?

Ich gebe auch gerne zu, dass ich die Parameter von "socket_set_option" nicht wirklich im Detail verstanden habe, ich konnte ausser der tausendfachen Wiederholung der relativ nichtssagenden Zeilen aus dem Hanbuch keine wirkliche detaillierte Erkärung, evtl. mit Beispielen, im Web finden.


Zuletzt bearbeitet von qualidat am Sa 07.04.2012 09:50, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
zweitaccount

Dabei seit: 25.01.2008
Ort: -
Alter: -
Geschlecht: -
Verfasst Sa 07.04.2012 10:31
Titel

Antworten mit Zitat Zum Seitenanfang

Was gibt dir denn
Code:
var_dump(socket_set_option($camsock,SOL_SOCKET,SO_RCVTIMEO));

zurück?

Wenn 'usec' leer, dann müsstest Du vlt. mal Php in xampp upgraden.

Übrigens schreibt einer das "sec" in Sekunden angegeben werden
und "usec" aber vermutlich in Millisekunden... falls Dir das was bringt.

Grüße
zweitaccount
  View user's profile Private Nachricht senden
 
Ähnliche Themen einlesen von socket(stream) in flash????
... Can't connect to local MySQL server through socket '/
[CSS] Tabulator setzen
anker in ein div container setzen?
Bookmark/Lesezeichen setzen!
Illustrator Fluchtpunkt setzen
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.