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"; }
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(); } }