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

                ## **連接池** 連接池的作用:連接池是將已經創建好的連接保存在池中,當有請求來時,直接使用已經創建好的連接對數據庫進行訪問。這樣省略了創建連接和銷毀連接的過程。這樣性能上得到了提高。 * * * 基本原理是這樣的: 建立數據庫連接池對象(服務器啟動)。 按照事先指定的參數創建初始數量的數據庫連接(即:空閑連接數)。 對于一個數據庫訪問請求,直接從連接池中得到一個連接。如果數據庫連接池對象中沒有空閑的連接,且連接數沒有達到最大(即:最大活躍連接數),創建一個新的數據庫連接。 存取數據庫。 關閉數據庫,釋放所有數據庫連接(此時的關閉數據庫連接,并非真正關閉,而是將其放入空閑隊列中。如實際空閑連接數大于初始空閑連接數則釋放連接)。 釋放數據庫連接池對象(服務器停止、維護期間,釋放數據庫連接池對象,并釋放所有連接) * * * think-swoole 默認有實現數據庫和緩存連接池功能,涵蓋了日常開發的主要場景。 最新的swoole版本支持一鍵協程,比如redis、mysql等等,很方便。連接池是在這個基礎上,解決一些問題和對性能的再一次提升。 使用think-swoole的連接池,需要修改config/swoole.php配置文件: ~~~ //連接池 'pool' => [ 'db' => [ 'enable' => true, // 是否啟用,不啟動設置為false 'max_active' => 100, // 最大連接數,超過將不再新建 'max_wait_time' => 5, // 超時時間 ], 'cache' => [ 'enable' => true, // 是否啟用,不啟動設置為false 'max_active' => 30, // 最大連接數,超過將不再新建 'max_wait_time' => 5, // 超時時間 ], ], ~~~ > 為什么enable設置為true,就啟動了連接池呢? 因為在`InteractsWithServer->onWorkerStart()`事件中開啟了協程,調用了`prepareApplication`,對`db`、`cache`進行重新綁定,替換為連接池實例 ~~~ protected function prepareApplication() { if (!$this->app instanceof SwooleApp) { $this->app = new SwooleApp($this->container->getRootPath()); $this->app->bind(SwooleApp::class, App::class); $this->app->bind(Server::class, $this->getServer()); $this->app->bind("swoole.server", Server::class); //綁定連接池 if ($this->getConfig('pool.db.enable', true)) { $this->app->bind('db', Db::class); } if ($this->getConfig('pool.cache.enable', true)) { $this->app->bind('cache', Cache::class); } $this->app->initialize(); $this->prepareConcretes(); } } ~~~
                  <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>

                              哎呀哎呀视频在线观看