Example #1
0
 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'];
     }
 }
Example #2
0
<?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;
Example #3
0
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"));