Performanceproblem: socket & fgets



  • function readLine($sock)
        {
            if (!is_resource($sock)) {
                return 'not connected';
            }
    
    		ob_start();
    		$timeout=5;
            $line = '';
            $timeout = time() + $timeout;
          	$line .= fgets($sock,  512);
            //socket_recv  ( $sock, $line, 512, 0 );
            ob_end_clean();
            return "<br/>line:".$line;
        }
    
    $sk = fsockopen("192.168.0.4", 12345, $errnum, $errstr, 1 );
    
    for( $i=0; $i < 100; $i++ )
    {
    
    fputs($sk, "/test\n/close\n") ;
    echo readLine( $sk );echo readLine( $sk );
    }
    
    fclose($sk);
    

    Das dauert 10 sekunden? Problem ist, dass fgets fast 500ms sekunden in kauf nimmt. Wenn ich das ganze via java schreiben dauert das max 0.1 ms? 😡

    Unter linux gibt es auch keinen utnerschied.



  • Das geht schon schnell, dauert aber auch 5-7 sekunden:

    $sock = socket_create(AF_INET,  SOCK_STREAM, SOL_TCP);
    socket_connect( $sock, "192.168.0.4", 1234 );
    
    for( $i=0; $i < 100; $i++ )
    {
    
    $buffer = "/test\n/close\n";
    socket_write( $sock, $buffer );
    
    $read = socket_read( $sock, 1024 );
    echo "<br/>LINE: ".$read;
    $read = socket_read( $sock, 1024 );
    echo "<br/>LINE: ".$read;
    }
    
    socket_close( $sock );
    


  • Weisst Du denn, wer da blockt? Es kann ja auch am Netzwerk liegen.



  • Öhmmmmmm mit java auf dem serlben rechner funktioniert dat ding perfekt 😮


Anmelden zum Antworten