|
1 | 1 | # EventLoop Component
|
2 | 2 |
|
3 |
| -[](http://travis-ci.org/reactphp/event-loop) [](https://codeclimate.com/github/reactphp/event-loop) |
| 3 | +[](http://travis-ci.org/reactphp/event-loop) |
| 4 | +[](https://codeclimate.com/github/reactphp/event-loop) |
4 | 5 |
|
5 | 6 | Event loop abstraction layer that libraries can use for evented I/O.
|
6 | 7 |
|
@@ -39,33 +40,35 @@ All of the loops support these features:
|
39 | 40 | ## Usage
|
40 | 41 |
|
41 | 42 | Here is an async HTTP server built with just the event loop.
|
| 43 | + |
42 | 44 | ```php
|
43 |
| - $loop = React\EventLoop\Factory::create(); |
44 |
| - |
45 |
| - $server = stream_socket_server('tcp://127.0.0.1:8080'); |
46 |
| - stream_set_blocking($server, 0); |
47 |
| - $loop->addReadStream($server, function ($server) use ($loop) { |
48 |
| - $conn = stream_socket_accept($server); |
49 |
| - $data = "HTTP/1.1 200 OK\r\nContent-Length: 3\r\n\r\nHi\n"; |
50 |
| - $loop->addWriteStream($conn, function ($conn) use (&$data, $loop) { |
51 |
| - $written = fwrite($conn, $data); |
52 |
| - if ($written === strlen($data)) { |
53 |
| - fclose($conn); |
54 |
| - $loop->removeStream($conn); |
55 |
| - } else { |
56 |
| - $data = substr($data, $written); |
57 |
| - } |
58 |
| - }); |
| 45 | +$loop = React\EventLoop\Factory::create(); |
| 46 | + |
| 47 | +$server = stream_socket_server('tcp://127.0.0.1:8080'); |
| 48 | +stream_set_blocking($server, 0); |
| 49 | +$loop->addReadStream($server, function ($server) use ($loop) { |
| 50 | + $conn = stream_socket_accept($server); |
| 51 | + $data = "HTTP/1.1 200 OK\r\nContent-Length: 3\r\n\r\nHi\n"; |
| 52 | + $loop->addWriteStream($conn, function ($conn) use (&$data, $loop) { |
| 53 | + $written = fwrite($conn, $data); |
| 54 | + if ($written === strlen($data)) { |
| 55 | + fclose($conn); |
| 56 | + $loop->removeStream($conn); |
| 57 | + } else { |
| 58 | + $data = substr($data, $written); |
| 59 | + } |
59 | 60 | });
|
| 61 | +}); |
60 | 62 |
|
61 |
| - $loop->addPeriodicTimer(5, function () { |
62 |
| - $memory = memory_get_usage() / 1024; |
63 |
| - $formatted = number_format($memory, 3).'K'; |
64 |
| - echo "Current memory usage: {$formatted}\n"; |
65 |
| - }); |
| 63 | +$loop->addPeriodicTimer(5, function () { |
| 64 | + $memory = memory_get_usage() / 1024; |
| 65 | + $formatted = number_format($memory, 3).'K'; |
| 66 | + echo "Current memory usage: {$formatted}\n"; |
| 67 | +}); |
66 | 68 |
|
67 |
| - $loop->run(); |
| 69 | +$loop->run(); |
68 | 70 | ```
|
| 71 | + |
69 | 72 | **Note:** The factory is just for convenience. It tries to pick the best
|
70 | 73 | available implementation. Libraries `SHOULD` allow the user to inject an
|
71 | 74 | instance of the loop. They `MAY` use the factory when the user did not supply
|
|
0 commit comments