• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Endlosschleife durch Socket_read

Beavis

Mitglied
Guten

Ich habe ein Problem mit den Socket
Bei mir entsteht durch das lesen eine Dauerschleife und ich versteh nicht aus welchen Grund.
Der PHP Code Teil ist der:
PHP:
    error_reporting(-1);
    $host = "127.0.0.1";
    $port = "17779";
    $i=0;
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    socket_connect($socket, $host , $port);
    $buf = socket_read($socket, 5000, PHP_NORMAL_READ);
    $teile = explode(",", $buf);
    foreach($teile as $t){
        $teileex = explode("|", $t);
        if(!isset($teileex[1]))continue;
        $Geld = $teileex[0];
        $X = $teileex[1];
        $Y = $teileex[2];
        $Name = $teileex[3];
        $Score = $teileex[4];
        $Ping = $teileex[5];
        $Skin = $teileex[6];
        if($Y>0&&$X>0)$Y = $Y-$Y-$Y;
        else if($Y<0)$Y = $Y-$Y-$Y;
        else if($X < 0 && $Y > 0)$Y = $Y-$Y-$Y;
        $CordsX = $X+3000;
        $CordsY = $Y+3000;
        echo '
            <div class="markerblue" id="'.$Name.'" data-coords="'.$CordsX.', '.$CordsY.'" title="'.$Name.'">
                <h3>'.$Name.'</h3>
                <p>
                    <img src="image/skins/Skin_'.$Skin.'.png" style="float:left; padding-right: 5px;" />
                    '.$Name.'<br />
                    '.$Geld.'$ Handgeld<br />
                    Score '.$Score.'<br />
                    Ping '.$Ping.'
                </p>
            </div>
        ';
        $i++;
    }
    socket_close($socket);

Den Teil sollte er mir eigendlich ausgeben bzw den soll er lesen
1200|-252|1500|Name|0|0|0,\r\n

hat jemand eine Idee warum das in einer Dauerschleife endet?
 
Das sollte eigentlich nicht so schwer sein das Problem selbst zu identifizieren.
Insbesondere wenn man mit Sockets und dergleichen herumwerkt, sollte man mit dem Debuggen keine Probleme mehr haben …

Ein paar var_dump(), print_r(), echo(), die() oder exit() und schon ist der Fehler gefunden ...
 
Zuletzt bearbeitet:
Create & Connect gehen 1A
Beim lesen kommt er nicht weiter

Ok, dann bist du dir also sicher dass die Applikation beim read stehen bleibt und nicht sonst wo. Versuch doch mal ein Timeout zu setzen:

PHP:
socket_set_option($socket,SOL_SOCKET, SO_RCVTIMEO, array("sec"=>1, "usec"=>0));
 
Hab das mal mit den Timeout und debug gemacht
Code:
load socket_create
load socket_connect
load socket_set_option
load socket_send
load socket_read

Warning: socket_read() [function.socket-read]: unable to read from socket [0]: Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat. in D:\xampp\htdocs\load.php on line 16
load foreach
 
Zurück
Oben