public function run(Promise &$promise)
 {
     $urlInfo = parse_url($this->url);
     $timeout = $this->timeout;
     if (!isset($urlInfo['port'])) {
         $urlInfo['port'] = 80;
     }
     $cli = new \swoole_http_client($urlInfo['host'], $urlInfo['port']);
     $cli->set(array('timeout' => $timeout, 'keepalive' => 0));
     $cli->on("error", function ($cli) use(&$promise) {
         Timer::del($cli->sock);
         $promise->accept(['http_data' => null, 'http_error' => 'Connect error']);
     });
     $cli->on("close", function ($cli) use(&$promise) {
     });
     $cli->execute($this->url, function ($cli) use(&$promise) {
         Timer::del($cli->sock);
         $cli->isDone = true;
         $promise->accept(['http_data' => $cli->body]);
     });
     $cli->isConnected = false;
     if (!$cli->errCode) {
         Timer::add($cli->sock, $this->timeout, function () use($cli, &$promise) {
             @$cli->close();
             if ($cli->isConnected) {
                 $promise->accept(['http_data' => null, 'http_error' => 'Http client read timeout']);
             } else {
                 $promise->accept(['http_data' => null, 'http_error' => 'Http client connect timeout']);
             }
         });
     }
 }
 public function run($coroutine)
 {
     $urlInfo = parse_url($this->url);
     $timeout = $this->timeout;
     if (!isset($urlInfo['port'])) {
         $urlInfo['port'] = 80;
     }
     $cli = new \swoole_http_client($urlInfo['host'], $urlInfo['port']);
     $cli->set(['timeout' => $timeout, 'keep_alive' => 0]);
     $cli->on('close', function ($cli) {
     });
     $cli->on('error', function ($cli) use($coroutine) {
         $coroutine->run(false);
     });
     $cli->execute($this->url, function ($cli) use($coroutine) {
         $coroutine->run($cli->body);
     });
     return self::retBreak();
 }
Example #3
0
    $route = $request->server['request_uri'];
    if ($route == '/info') {
        $response->end(json_encode($request));
        return;
    }
    $cli = new swoole_http_client('127.0.0.1', 9501);
    $cli->set(['timeout' => 0.3, 'keep_alive' => 1]);
    //post request
    $cli->setData(http_build_query(['a' => 123, 'b' => "哈哈"]));
    $cli->setHeaders(['User-Agent' => "swoole"]);
    $cli->on('close', function ($cli) use($response) {
        //      echo "close\n";
    });
    $cli->on('error', function ($cli) use($response) {
        $response->end("error");
    });
    $cli->execute('/info', function ($cli) use($response, &$i) {
        $cli->setHeaders(['User-Agent' => "swoole"]);
        //get request
        $cli->execute('/info', function ($cli) use($response, &$i) {
            $ret = json_encode($cli->headers) . "\nSERVER RESPONSE: " . $cli->body;
            $response->end($ret);
            $cli->close();
        });
    });
    if ($i++ == 1000) {
        echo "----->Mem: ", memory_get_usage(), "b\n";
        $i = 0;
    }
});
$http->start();
Example #4
0
<?php

$cli = new swoole_http_client('127.0.0.1', 80);
//post request
//$cli->setData(http_build_query(['a'=>123,'b'=>"哈哈"]));
$cli->setHeaders(['User-Agent' => "swoole"]);
$cli->execute('/dump.php', function ($cli) {
    echo $cli->body;
});
<?php

ini_set('display_errors', 1);
error_reporting(E_ALL);
$http = new swoole_http_server("", 9501, SWOOLE_BASE);
$http->set(['worker_num' => 2]);
$http->on('request', function ($request, swoole_http_response $response) {
    $route = $request->server['request_uri'];
    if ($route == '/info') {
        $response->end(111);
        return;
    }
    $cli = new swoole_http_client('127.0.0.1', 9501);
    $cli->set(['timeout' => 0.3, 'keep_alive' => 1]);
    $cli->on('close', function ($cli) use($response) {
        //      echo "close\n";
    });
    $cli->on('error', function ($cli) use($response) {
        echo "error\n";
        $response->end("error");
    });
    $cli->execute('/info', function ($cli) use($response) {
        $cli->execute('/info', function ($cli) use($response) {
            $ret = json_encode($cli->headers) . $cli->body;
            $response->end($ret);
            $cli->close();
            //echo "----->Mem: ", memory_get_usage(), "b\n";
        });
    });
});
$http->start();
Example #6
0
<?php

$cli = new swoole_http_client('127.0.0.1', 9501);
//post request
//$cli->setData(http_build_query(['a'=>123,'b'=>"哈哈"]));
$cli->setHeaders(['Connection' => "Upgrade", 'Upgrade' => 'websocket', 'Sec-WebSocket-Key' => '1ZHQOHNfAXBMEUF2yuh1Sg==', 'Sec-WebSocket-Extensions' => 'permessage-deflate; client_max_window_bits']);
$cli->on('message', function ($_cli, $frame) {
    var_dump($frame);
});
$cli->execute('/', function ($cli) {
    echo $cli->body;
    $cli->push("hello world");
});