<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 使用異步客戶端 [TOC] `PHP`提供的`MySQL`、`CURL`、`Redis`等客戶端是同步的,會導致服務器程序發生阻塞。`Swoole`提供了常用的異步客戶端組件,來解決此問題。編寫純異步服務器程序時,可以使用這些異步客戶端。 異步客戶端可以配合使用`SplQueue`實現連接池,以達到長連接復用的目的。在實際項目中可以使用`PHP`提供的`Yield/Generator`語法實現半協程的異步框架。也可以基于`Promises`簡化異步程序的編寫。 ## MySQL ~~~ $db = new Swoole\MySQL; $server = array( 'host' => '127.0.0.1', 'user' => 'test', 'password' => 'test', 'database' => 'test', ); $db->connect($server, function ($db, $result) { $db->query("show tables", function (Swoole\MySQL $db, $result) { var_dump($result); $db->close(); }); }); ~~~ 與`mysqli`和`PDO`等客戶端不同,`Swoole\MySQL`是異步非阻塞的,連接服務器、執行SQL時,需要傳入一個回調函數。`connect`的結果不在返回值中,而是在回調函數中。`query`的結果也需要在回調函數中進行處理。 ## Redis ~~~ $redis = new Swoole\Redis; $redis->connect('127.0.0.1', 6379, function ($redis, $result) { $redis->set('test_key', 'value', function ($redis, $result) { $redis->get('test_key', function ($redis, $result) { var_dump($result); }); }); }); ~~~ `Swoole\Redis`需要`Swoole`編譯安裝`hiredis`,詳細文檔參見[異步Redis客戶端](異步Redis客戶端.md "異步Redis客戶端") ## Http ~~~ $cli = new Swoole\Http\Client('127.0.0.1', 80); $cli->setHeaders(array('User-Agent' => 'swoole-http-client')); $cli->setCookies(array('test' => 'value')); $cli->post('/dump.php', array("test" => 'abc'), function ($cli) { var_dump($cli->body); $cli->get('/index.php', function ($cli) { var_dump($cli->cookies); var_dump($cli->headers); }); }); ~~~ `Swoole\Http\Client`的作用與`CURL`完全一致,它完整實現了`Http`客戶端的相關功能。具體請參考[HttpClient文檔](異步Http-WebSocket客戶端.md) ## 其他客戶端 `Swoole`底層目前只提供了最常用的`MySQL`、`Redis`、`Http`異步客戶端,如果你的應用程序中需要實現其他協議客戶端,如`Kafka`、`AMQP`等協議,可以基于`Swoole\Client`異步`TCP`客戶端,開發相關協議解析代碼,來自行實現。
                  <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>

                              哎呀哎呀视频在线观看