<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 1.8.0 使用內置Http異步客戶端 Swoole-1.8.0版本內置了`HttpClient`,經過多個版本的迭代,內置HttpClient無論從功能、性能、穩定性上都已經非常出色。 使用實例 --- ```php $cli = new swoole_http_client('127.0.0.1', 80); $cli->setHeaders(['User-Agent' => "swoole"]); $cli->post('/dump.php', array("test" => 'abc'), function ($cli) { echo $cli->body; }); ``` 并發能力 ---- 相比`curl`和`file_get_contents`這樣PHP提供的Http客戶端,`swoole_http_client`最大的優勢是支持大量并發。 `file_get_contents`只能同時請求一個URL,并發只能通過開啟多進程實現。`curl`提供了`curl_multi`功能實現并發基于`select`和多線程。并發能力都很差。而`swoole_http_client`是基于`epoll`實現的異步客戶端,沒有并發限制,可在一個進程內同時并發上萬請求。 性能問題 ---- 在PHP中也有純PHP實現的Http客戶端,如`Guzzle`,這些類庫最大的問題是Http協議解析是由PHP代碼實現的,PHP代碼在這樣場景下進行大量運算性能較差,而且還會占用大量內存。`swoole_http_client`是由C代碼實現的,解析Http協議的性能是非常高的,內存占用也很少。 在解析`gzip`壓縮后的HTML時,`swoole_http_client`的優勢更為明顯,它可以使用`download`方法,以很小的內存占用即可完成超大文件的下載。由于PHP層面沒有提供`zlib`流式分段解壓的支持,只能將Http Body全部放置到內存中,調用`gzdecode`一次性解壓,而這會占用大量內存。 SSL支持 ---- `swoole_http_client`支持SSL和TLS隧道加密的`https`網址,并且支持配置客戶端證書。 ```php $cli = new swoole_http_client('127.0.0.1', 80, true); //如果服務器需要提供SSL證書 $cli->set(array( 'ssl_cert_file' => $certFile, 'ssl_key_file' => $keyFile, )); $cli->setHeaders(['User-Agent' => "swoole"]); $cli->get('/index.php', function ($cli) { file_put_contents(__DIR__.'/t.html', $cli->body); }); ``` Socks5代理 ---- `swoole_http_client`支持`Socks5`代理,只需要設置幾個參數就可以直接使用。 ```php $cli = new swoole_http_client('127.0.0.1', 80); $cli->set(array( 'socks5_host' => '192.168.1.100', 'socks5_port' => 1080, 'socks5_username' => 'username', //用戶名和密碼為可選項 'socks5_password' => 'password', )); $cli->setHeaders(['User-Agent' => "swoole"]); $cli->get('/index.php', function ($cli) { file_put_contents(__DIR__.'/t.html', $cli->body); }); ``` 上傳文件 --- `swoole_http_client`底層使用了`sendfile`系統調用實現了http上傳超大文件,配合底層的`epoll`可以實現非常低的消耗完成超巨大文件的上傳。`sendfile`是零拷貝的,占用內存非常少,并且不存在多次內存復制開銷。 ```php $cli = new swoole_http_client('127.0.0.1', 80); $cli->addFile(__DIR__.'/post.data', 'post'); $cli->addFile(dirname(__DIR__).'/test.jpg', 'debug'); $cli->post('/dump2.php', array("xxx" => 'abc', 'x2' => 'rango'), function ($cli) { echo $cli->body; $cli->close(); }); ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看