/framework/experimental/pherver/HttpServer.php

http://zoop.googlecode.com/ · PHP · 85 lines · 41 code · 11 blank · 33 comment · 2 complexity · 4fec9bf640af4073ee07da16d260ab94 MD5 · raw file

  1. <?php
  2. class HttpServer extends Pherver
  3. {
  4. protected function handleNew($newsock)
  5. {
  6. }
  7. protected function handleRead($read_sock)
  8. {
  9. // read up to 10000 bytes
  10. // $data = '';
  11. // while(true)
  12. // {
  13. // echo "getting line\n";
  14. // socket_set_nonblock($read_sock);
  15. // $line = socket_read($read_sock, 1024, PHP_BINARY_READ);
  16. // echo "type = " . gettype($line) . "\n";
  17. // echo "len = " . strlen($line) . "\n";
  18. // echo "value = $line\n";
  19. //
  20. // $err = socket_last_error($read_sock);
  21. // if($err)
  22. // echo "error = " . socket_strerror($err) . "\n";
  23. // else
  24. // echo "no error\n";
  25. //
  26. // if(strlen($line) == 0)
  27. // break;
  28. // $data .= $line;
  29. // }
  30. $data = socket_read($read_sock, 1024, PHP_BINARY_READ);
  31. // if(strlen($data) == 5)
  32. // for($i = 0; $i < strlen($data); $i++)
  33. // echo "the char is = " . ord($data[$i]) . "\n";
  34. echo "start dumping raw data\n";
  35. var_dump($data);
  36. echo "done dumping raw data\n";
  37. // check if the client is disconnected
  38. // if ($data === false)
  39. if(!$data)
  40. {
  41. // remove client for $this->clients array
  42. $key = array_search($read_sock, $this->clients);
  43. unset($this->clients[$key]);
  44. echo "client disconnected.\n";
  45. // continue to the next client to read from, if any
  46. return;
  47. }
  48. echo "recieving request\n";
  49. // check if there is any data after trimming off the spaces
  50. if (!empty($data))
  51. {
  52. echo "printing raw request content\n";
  53. echo $data . "\n";
  54. //
  55. $message = new HttpMessage($data);
  56. echo "printing out message object\n";
  57. print_r($message);
  58. echo $message->getType() . "\n";
  59. echo $message->getRequestMethod() . "\n";
  60. echo $message->getRequestUrl() . "\n";
  61. HttpResponse::setData("<html><body>asdf</body></html>");
  62. print_r(HttpResponse::getRequestHeaders());
  63. // HttpResponse::send();
  64. // echo "printing the data\n";
  65. // echo HttpResponse::getData();
  66. }
  67. else
  68. {
  69. echo "received empty request\n";
  70. sleep(10);
  71. }
  72. echo "done receiving request\n\n\n\n";
  73. }
  74. }