Esempio n. 1
0
 public static function serve()
 {
     $options = self::$_options;
     $sock = self::$_socket;
     $bound = socket_bind($sock, $options['bind_address'], $options['listen_port']);
     if (!$bound) {
         return;
     }
     socket_listen($sock);
     echo "Server is listening on port " . $options['listen_port'] . PHP_EOL;
     while (self::$_continue) {
         $childSocket = socket_accept($sock);
         $input = socket_read($childSocket, 1024);
         if ($input) {
             $request = new Pebble_Http_Request($input);
             if ($options['verbose']) {
                 echo $request;
             }
             try {
                 $response = self::$_dispatcher->dispatch($request);
             } catch (Exception $e) {
                 echo "Uncaught Exception: " . $e->getMessage() . PHP_EOL;
                 $response = new Pebble_Http_Response();
                 $response->setStatusCode(Pebble_Http_Response::HTTP_STATUS_SERVER_ERROR);
             }
             if ($options['verbose']) {
                 echo " (" . $response->getStatusCode() . ")" . PHP_EOL;
             }
             socket_write($childSocket, $response->__toString());
             socket_close($childSocket);
             unset($childSocket);
         } else {
             echo "Socket Error: " . socket_last_error($childSocket) . "\n";
         }
     }
     socket_close(self::$_socket);
 }