AshutoshSurya007
AshutoshSurya007

Reputation: 86

PHP : echo not working in infinite while loop

I want to show $input from the client using echo on the server side.

PHP Server:

<?php

$socket = stream_socket_server("tcp://127.0.0.1:8000", $errno, $errstr);
if (!$socket) {
    echo "$errstr ($errno)<br />\n";
} else {
    while ($conn = stream_socket_accept($socket)) {
        $input = fread($conn, 1024);
        echo $input;

        fwrite($conn, 'Wait for a while... ' . $input);
        fclose($conn);
    }
    fclose($socket);
}

fwrite() successfully writes $input to client but echo $input displaying nothing.

Upvotes: 3

Views: 171

Answers (1)

Ivan
Ivan

Reputation: 2579

You should use flush():

<?php

$socket = stream_socket_server("tcp://127.0.0.1:8000", $errno, $errstr);
if (!$socket) {
    echo "$errstr ($errno)<br />\n";
} else {
   while ($conn = stream_socket_accept($socket)) {
       $input = fread($conn, 1024);
       echo $input;
       ob_flush();
       flush();
       fwrite($conn, 'Wait for a while... ' . $input);
       fclose($conn);
  }
  fclose($socket);
}

Upvotes: 4

Related Questions