Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP : echo not working in infinite while loop

Tags:

php

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.

like image 785
AshutoshSurya007 Avatar asked Mar 14 '26 18:03

AshutoshSurya007


1 Answers

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);
}
like image 139
Ivan Avatar answered Mar 16 '26 07:03

Ivan