Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?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));