21-http-server.php 1005 B

12345678910111213141516171819202122232425262728293031323334
  1. <?php
  2. use React\EventLoop\Loop;
  3. require __DIR__ . '/../vendor/autoload.php';
  4. // start TCP/IP server on localhost:8080
  5. // for illustration purposes only, should use react/socket instead
  6. $server = stream_socket_server('tcp://127.0.0.1:8080');
  7. if (!$server) {
  8. exit(1);
  9. }
  10. stream_set_blocking($server, false);
  11. // wait for incoming connections on server socket
  12. Loop::addReadStream($server, function ($server) {
  13. $conn = stream_socket_accept($server);
  14. $data = "HTTP/1.1 200 OK\r\nContent-Length: 3\r\n\r\nHi\n";
  15. Loop::addWriteStream($conn, function ($conn) use (&$data) {
  16. $written = fwrite($conn, $data);
  17. if ($written === strlen($data)) {
  18. fclose($conn);
  19. Loop::removeWriteStream($conn);
  20. } else {
  21. $data = substr($data, $written);
  22. }
  23. });
  24. });
  25. Loop::addPeriodicTimer(5, function () {
  26. $memory = memory_get_usage() / 1024;
  27. $formatted = number_format($memory, 3).'K';
  28. echo "Current memory usage: {$formatted}\n";
  29. });