コード例 #1
0
ファイル: httpdtest.php プロジェクト: dreamsxin/Kellner
function test_callback($evhttp_request)
{
    echo "script-land memory: " . memory_get_usage() . " and real memory from system: " . memory_get_usage(true) . "\n";
    $uri = evhttp_request_get_uri($evhttp_request);
    $ct = evhttp_request_find_header($evhttp_request, 'Content-Type');
    echo "URI: {$uri}\n";
    echo "Content-Type: {$ct}\n";
    print_r(evhttp_request_headers($evhttp_request));
    echo evhttp_request_body($evhttp_request);
    evhttp_response_add_header($evhttp_request, "Content-Type", "text/plain");
    return evhttp_response_set("Hello World!", 200, "OK");
}
コード例 #2
0
ファイル: main.php プロジェクト: dreamsxin/Kellner
 private function _initRequest($r)
 {
     $_SERVER["REQUEST_METHOD"] = evhttp_request_method($r);
     $_SERVER["REQUEST_TIME"] = time();
     $_SERVER["argv"] = $_SERVER["REQUEST_URI"] = evhttp_request_get_uri($r);
     $parts = parse_url($_SERVER["REQUEST_URI"]);
     $_SERVER['QUERY_STRING'] = $parts['query'];
     parse_str($_SERVER['QUERY_STRING'], $_GET);
     $headers = evhttp_request_headers($r);
     // normalize to php way
     foreach ($headers as $name => $value) {
         $_SERVER["HTTP_" . str_replace("-", "_", strtoupper($name))] = $value;
     }
     echo "script-land memory: " . memory_get_usage() . "\n";
 }
コード例 #3
0
ファイル: main.php プロジェクト: dreamsxin/Kellner
 public function processRequest($r)
 {
     try {
         printf("Used script-land memory %.2f MB\n", memory_get_usage() / (1024 * 1024));
         $uri = evhttp_request_get_uri($r);
         $parts = parse_url($uri);
         // let's process the request with the chosen webservice protocol
         switch (trim($parts['path'], "/")) {
             case "xmlrpc":
                 // set custom request, since we have to get post data through another function
                 $request = new EvHttp_XmlRpc_Request($r);
                 $this->xmlrpc_server->setRequest($request);
                 $response = $this->xmlrpc_server->handle();
                 unset($request);
                 evhttp_response_add_header($r, "Content-Type", "text/xml");
                 return evhttp_response_set($response->__toString(), 200, "OK");
             case "jsonrpc":
                 if ("GET" == evhttp_request_method($r)) {
                     // Grab the SMD
                     $smd = $this->jsonrpc_server->getServiceMap();
                     // Return the SMD to the client
                     evhttp_response_add_header($r, "Content-Type", "application/json");
                     return evhttp_response_set($smd, 200, "OK");
                 } else {
                     // set custom request, since we have to get post data through another function
                     $request = new EvHttp_Json_Request($r);
                     $this->jsonrpc_server->setResponse(new Zend_Json_Server_Response());
                     $response = $this->jsonrpc_server->handle($request);
                     unset($request);
                     evhttp_response_add_header($r, "Content-Type", "application/json");
                     return evhttp_response_set($response->toJson(), 200, "OK");
                 }
             default:
                 return evhttp_response_set("Invalid Protocol", 500, "Error");
         }
     } catch (Exception $e) {
         return $e->__toString();
     }
 }