Skip to content
Snippets Groups Projects
test1.php 2.11 KiB
Newer Older
  • Learn to ignore specific revisions
  • Maxime Veber's avatar
    Maxime Veber committed
    <?php
    
    require 'vendor/autoload.php';
    
    use React\EventLoop\Factory as EventLoopFactory;
    use Symfony\Component\HttpClient\NativeHttpClient;
    use Symfony\Contracts\HttpClient\HttpClientInterface;
    use React\Promise\Stream;
    
    $loop = EventLoopFactory::create();
    
    $client = new NativeHttpClient();
    
    function load($url, \React\EventLoop\LoopInterface $loop, HttpClientInterface $client) {
    //    $def = new Deferred();
        $response = $client->request('GET', $url);
    
        $stream = new \React\Stream\ReadableResourceStream($response->toStream(), $loop);
        return $stream;
    //    $loop->addReadStream($response->toStream(), function ($stream) use ($def) {
    ////        var_dump(stream_get_meta_data($stream));
    //        echo "HELO\n";
    //        $def->resolve();
    //    });
    //    return Stream\unwrapReadable(Stream\buffer($stream));
    
    //    return $def->promise();
    }
    
    //load('https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/debian-live-10.2.0-amd64-cinnamon.iso', $loop, $client)
    //    ->on('pipe', function () {
    //        echo "hello.";
    //    })
    //    ->on('end', function () {
    //        echo "Loaded cinnamon\n";
    //    });
    //
    //load('https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/debian-live-10.2.0-amd64-standard.iso', $loop, $client)
    //    ->on('data', function () {
    //        echo "world.";
    //    })
    //    ->on('end', function () {
    //        echo "Loaded standard\n";
    //    });
    
    load('http://localhost:8000/long-to-execute', $loop, $client)
        ->on('data', function ($data) {
            echo "hello.";
            var_dump($data);
        })
        ->on('end', function () {
            echo "Loaded long\n";
        });
    
    load('http://localhost:8001/faster', $loop, $client)
        ->on('data', function ($data) {
            echo "world.";
            var_dump($data);
        })
        ->on('end', function () {
            echo "Loaded fast\n";
        });
    
    echo "Not blocking at this state\n";
    
    $loop->run();
    
    //$response = $client->request('GET', 'https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/debian-live-10.2.0-amd64-standard.iso');
    //$streamResource = $response->toStream();
    //
    //file_put_contents('foo.iso', stream_get_contents($streamResource));