From 63c867983b80678bc4cedb4ce491eed114be7c86 Mon Sep 17 00:00:00 2001
From: Maxime Veber <nek.dev@gmail.com>
Date: Sun, 5 Jan 2020 18:31:10 +0100
Subject: [PATCH] Flush headers (& fix test)

---
 server/index.php |  4 +++-
 test2.php        | 13 ++++++++++---
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/server/index.php b/server/index.php
index 3ee8db1..8d237ae 100644
--- a/server/index.php
+++ b/server/index.php
@@ -27,16 +27,18 @@ foreach ($_SERVER as $k => $v) {
 
 $json = json_encode($vars, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
 
+header('Content-Type: application/json', true);
 
 switch ($vars['REQUEST_URI']) {
     case '/long-to-execute':
+        flush();
         sleep(5);
         break;
     case '/faster':
+        flush();
         sleep(1);
         break;
 }
 
-header('Content-Type: application/json', true);
 
 echo $json;
diff --git a/test2.php b/test2.php
index 42e223b..140bc27 100644
--- a/test2.php
+++ b/test2.php
@@ -13,11 +13,12 @@ $response2 = $response = $client->request('GET', 'http://localhost:8001/faster')
 $stream2 = $response2->toStream();
 stream_set_blocking($stream2, 0);
 
+$originalRead = [$stream1, $stream2];
 $write = [];
 $except = [];
 do {
-    $read = [$stream1, $stream2];
-    $foo = stream_select($read, $write, $except, null, 0);
+    $read = $originalRead;
+    $foo = @stream_select($read, $write, $except, null, 0);
 
     foreach ($read as $item) {
         var_dump(stream_get_contents($item));
@@ -25,8 +26,14 @@ do {
 
     echo "Stream 1: \n";
     var_dump(\feof($stream1));
+    if (\feof($stream1)) {
+        unset($originalRead[0]);
+    }
 
     echo "Stream 2: \n";
     var_dump(\feof($stream2));
-} while (!\feof($stream1) && !\feof($stream2)); // while streams are not finished
+    if (\feof($stream1)) {
+        unset($originalRead[1]);
+    }
+} while (!\feof($stream1) || !\feof($stream2)); // while streams are not finished
 
-- 
GitLab