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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # 前言 該文章針對的是thinkphp 6.0,適合對tp6有一定了解的。 同時 think-swoole 是基于swoole的,要了解這個擴展如何使用,首先需要對swoole有一定的了解,這也是本文閱讀的前提。 Swoole:[https://wiki.swoole.com/wiki/page/1.html](https://wiki.swoole.com/wiki/page/1.html) # 開始前準備 在使用這個擴展前,我們先安裝ThinkPHP 6.0,具體的安裝方式可以看這里:[http://www.hmoore.net/manual/thinkphp6\_0/1037481](http://www.hmoore.net/manual/thinkphp6_0/1037481) 根據上面的安裝文檔,我們創建2個TP6項目,分別是tp1,tp2,至于為什么要安裝2個后面會講到。 ## 約定 * 下面提到的任何命令,如果沒有特別說明,都是在命令控制臺上執行的 ## 具體用到的命令 ``` composer create-project topthink/think tp1 composer create-project topthink/think tp2 ``` # 安裝think-swoole擴展 分別在這2個項目下,執行如下安裝命令安裝最新版: ``` composer require topthink/think-swoole ``` 如果安裝成功,在項目目錄下執行 `php think` 可以看到 如下界面所示: ![](https://img.kancloud.cn/de/30/de30ec42f78c8164f0393a6ad2a64743_1168x1602.png) # 運行swoole 分別進入這2個項目,找到這個文件 `config/swoole.php` ,找到這行,修改端口號: ![](https://img.kancloud.cn/a4/09/a409de9b9bb495e79cb2b1a77866ea8d_1166x150.png) tp1項目修改為`8081`,tp2項目修改為`8082`,監聽地址都修改為 `0.0.0.0` 修改完后分別在這2項目下運行: ``` php think swoole ``` 啟動完成后,默認會在`0.0.0.0:8081`、`0.0.0.0:8082`啟動一個HTTP Server,可以直接訪問當前的應用。 ![](https://img.kancloud.cn/7e/9c/7e9cd3943302e85ec449c1bdf3fb277f_912x212.png) 當出現這個界面后,我們訪問這個這個地址,就能看到tp6默認的控制器輸出的內容了 ![](https://img.kancloud.cn/34/62/34622f868189252faa4de15c935036a1_1186x774.png) 看到這里,恭喜大家已經正常跑起來,接下來你要做的是和傳統模式一樣的開發你的應用,然后上線。 ## 注意事項 * 我 `10.211.55.13` 這個是我虛擬機的IP地址,需要換成你自己的,如果你直接在你本機運行,可以直接訪問 `127.0.0.1` 這個IP就可以 # 熱更新 前面我們已經了解到了怎么運行think-swoole,接下來講的是開發過程中一個比較方便的功能,也就“熱更新”,不需要重復的在控制臺上執行`php think swoole`,導致開發體驗糟糕。 同樣找到 `config/swoole.php` 配置文件,我們看這里 ![](https://img.kancloud.cn/52/18/52181406361448d118fe78f5777199e9_932x242.png) 當我們在應用的根目錄下定義一個特殊的.env環境變量文件,里面設置了 `APP_DEBUG = true` 會默認開啟熱更新,你也可以直接把 `enable`設置為true。 參數說明: | 參數 | 說明 | | --- | --- | | name | 簡單點說就是監控那些類型的文件變動 | | include | 簡單點說就是監控那些路徑下的文件變動 | | exclude | 排除目錄 | > 注意: 關于.env文件的說明請看這里 [http://www.hmoore.net/manual/thinkphp6\_0/1037484](http://www.hmoore.net/manual/thinkphp6_0/1037484) 正式生產環境記得關閉 # 連接池 think-swoole 默認有實現 db、cache、rpc-client 的連接池功能,我們日常開發主要用到的也是這幾塊,這里我也簡單的講講。 首先,我們知道在最新的swoole版本中,都支持一鍵協程([https://wiki.swoole.com/wiki/page/993.html](https://wiki.swoole.com/wiki/page/993.html)),比如redis、mysql等等,很方便。連接池是在這個基礎上,解決一些問題和對性能的再一次提升。 同樣找到 `config/swoole.php` 配置文件,我們看這里 ![](https://img.kancloud.cn/66/c5/66c57507adea3a39dbe4495abd2d2e29_546x168.png) 這里需要設置為true,默認已經打開,flags默認即可。 接著我們配置這里 ![](https://img.kancloud.cn/5c/93/5c93c3a94b9c5f3da44b4cb9563b3e8c_512x504.png) 這一塊是對具體連接池的一個配置。其中的 3、5是根據自身業務和環境進行適當調整,最大化提高系統負載。 參數說明: | 參數 | 說明 | | --- | --- | | enable | 開關,不需要設置false | | max_active | 最大連接數,超過將不再新建連接 | | max_wait_time | 超時時間 | # RPC think-swoole 也支持簡單的rpc服務,實現了服務端和客戶端,這也是為什么一開始說的,為什么創建2個項目的原因,為了測試rpc服務。 ![](https://img.kancloud.cn/60/af/60afb30f2a727092197c487f09a77b7d_460x390.png) 配置文件這段就是和rpc相關的配置了,`sercer` 配置的是服務端相關的,`client` 配置的是客戶端相關的,在同一個項目,又可以是服務端,也可以是客戶端。 接下來我們來了解下如何使用。 ## 創建服務端接口 我們在項目tp1下 `app/rpc` 目錄下創建一個 `MyRpcInterface.php` 文件,代碼如下 ``` <?php namespace app\rpc; interface MyRpcInterface { public function demo(); } ``` 接著在同一目錄下創建 `MyRpc.php` 文件,代碼如下: ``` <?php namespace app\rpc; class MyRpc implements MyRpcInterface { public function demo(){ return 'myrpc'; } } ``` 現在tp1的項目代碼結果是這樣的 ![](https://img.kancloud.cn/5c/52/5c52bb616ce17869f6927dc4f504a0d5_546x568.png) 接著我們修改配置文件,把這個接口添加到服務端 ![](https://img.kancloud.cn/e4/9e/e49e7ec8b22c65d64b1f56c879b8c565_584x432.png) 然后執行 ``` php think swoole ``` ## 客戶端使用 接著我們到tp2項目下修改配置文件 ![](https://img.kancloud.cn/eb/13/eb13b781f673a93ad74c2e7f0df562ee_586x550.png) 其中 `tp1` 是可以隨便取的,相當于是rpc服務的一個別名,host和port是tp1項目配置的server信息,這個必須正確,不然無法走通。 接著我們在tp2運行如下命令 ``` php think rpc:interface ``` 看到如下圖表示成功 ![](https://img.kancloud.cn/bc/9a/bc9ab7be8f7d8ea8f60bde7ecbc4724c_1008x124.png) 這個時候會在`app`目錄下生成一個 `rpc.php`文件,文件內容如下: ![](https://img.kancloud.cn/71/ae/71ae3c5ff880470221093b7ed7744943_664x568.png) > 注意: 如果沒有這個文件,或者這個文件內容很少,那可能是那里有問題沒有設置正確,需要回頭看看上面。同時tp1項目也要啟動php think swoole才可以 接著我們來測試下,是不是可以使用正常,我們修改tp2項目下 `app/controller/Index.php` 文件: ![](https://img.kancloud.cn/46/f8/46f80e3a646cd46235f9b86e02518d86_1034x830.png) 然后啟動 `php think swoole` 用瀏覽器訪問下,就看到如下界面: ![](https://img.kancloud.cn/2d/9b/2d9b3267c7a44fcbd930e12690e0e043_752x270.png) 是不是很方便?和我們普通的調用沒有太大區別,開發體驗還是很不錯的。 # websocket 由于我很少用到,所以還沒去了解,等后續補充。
                  <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>

                              哎呀哎呀视频在线观看