public function generateServerVariables($buffer, $socket) { $_SERVER['SERVER_PORT'] = $this->port; $_SERVER['SERVER_ADDR'] = $this->host; $socketInfo = uv_tcp_getpeername($socket); if (isset($socketInfo['address'])) { $_SERVER['REMOTE_ADDR'] = $socketInfo['address']; } $result = array(); $_SERVER['RAW_HTTP_HEADER'] = $buffer; $result = $this->httpParser->parse($buffer); if (isset($result['HEADERS']['HOST'])) { $_SERVER['HTTP_HOST'] = $result['HEADERS']['HOST']; } $requestMethod = $result['REQUEST_METHOD']; //constructing server variables $_SERVER['REQUEST_METHOD'] = $result['REQUEST_METHOD']; if (isset($result['PATH'])) { $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'] = $result['PATH']; } if (isset($result['HEADERS']['USER_AGENT'])) { $_SERVER['HTTP_USER_AGENT'] = $result['HEADERS']['USER_AGENT']; } }
<?php $url = "http://yahoo.co.jp/"; $parts = parse_url($url); $domain = $parts['host']; $path = $parts['path'] . '?' . $parts['query']; $uv = uv_ares_init_options(uv_default_loop(), array("servers" => array("8.8.8.8"), "port" => 53), null); ares_gethostbyname($uv, $domain, AF_INET, function ($name, $addr) use($path, $host) { $a = array_shift($addr); $address = uv_ip4_addr($a, "80"); $tcp = uv_tcp_init(); uv_tcp_connect($tcp, $address, function ($client, $stat) use($path, $host) { var_dump(uv_tcp_getpeername($client)); $request = <<<EOF GET {$path} HTTP/1.0 Host: {$host} EOF; echo $request; var_dump($client); uv_write($client, $request, function ($client, $stat) { echo "write"; if ($stat == 0) { uv_read_start($client, function ($client, $nread, $buffer) { echo "\n1\n"; //var_dump($buffer); uv_close($client); }); } else { echo 2;
foreach ((array) $config['plugins'] as $plugin_class) { $plugin_klass = new $plugin_class($container); $processor->addPlugin($plugin_klass); unset($plugin_klass); } $kernel = new Chatwork\Server\Kernel(); $kernel->setRouter(new \Chatwork\Server\Router()); $kernel->setContainer($container); foreach ((array) $config['providers'] as $provider_class) { $provider_klass = new $provider_class($container); $kernel->registerProviders(array($provider_klass)); } uv_timer_start($timer, SECONDS_MS, SECONDS_MS, array($processor, "process")); createServer(function ($request = array(), \Chatwork\Server\HttpResponse $response, $client) use($kernel, $stat) { parse_str(ltrim($request['QUERY_STRING'], "/?"), $params); $peer = uv_tcp_getpeername($client); $request['peer'] = $peer; try { $result = $kernel->process($request, $params); $response->writeHead(200, array("Content-Type" => "text/plain")); $response->write($result); $response->end(); $stat->increment("http.200"); } catch (\Chatwork\Exception\RouteNotFoundException $e) { $response->writeHead(404, array("Content-Type" => "text/html")); $response->write("<h3>Not Found</h3>"); $response->write("<div>" . $e->getMessage() . "</div>"); $response->end(); $stat->increment("http.404"); } catch (Exception $e) { $response->writeHead(500, array("Content-Type" => "text/html"));