ThinkPHP
是一款經典的國產開源 PHP
開發框架。ThinkPHP
誕生於 2006
年,距今已經有 17
年曆史。ThinkPHP
在國內的應用非常廣泛,很多知名企業使用了 ThinkPHP
來構建 Web
專案。
早期版本的 ThinkPHP
主要是執行在 PHP-FPM
模式下。為了解決長連線、高併發、阻塞 IO
的問題,ThinkPHP
官方提供了 Think-Swoole
元件,底層全面適配了 Swoole
協程,使得 ThinkPHP
應用可以一鍵協程化。
GitHub 地址
建立 ThinkPHP 專案
composer create-project topthink/think tp
使用 composer
命令可以快速建立一個 ThinkPHP
新專案。已有專案可跳過此步驟。
引入 Think-Swoole 元件
composer require topthink/think-swoole
啟動 HTTP 服務
直接在命令列下啟動 HTTP
服務端。
php think swoole
啟動完成後,預設會在 0.0.0.0:80
啟動一個 HTTP Server
,可以直接訪問當前的應用。相關配置引數可以在 config/swoole.php
裡面配置(具體參考配置檔案內容)。
若本機已安裝了Nginx
,可能80
已被佔用,可修改config/swoole.php
設定為其他的埠
啟動後透過 http://127.0.0.1:9580/
訪問程式
熱更新
由於 Swoole
服務執行過程中 PHP
檔案是常駐記憶體執行的,這樣可以避免重複讀取磁碟、重複解釋編譯,以便達到最高效能。所以更改業務程式碼後必須手動reload
或者 restart
才能生效。
Think-Swoole
提供了熱更新功能,在檢測到相關目錄的檔案有更新後會自動 reload
,從而不需要手動進行 reload
操作,方便開發除錯。
如果你的應用開啟了除錯模式,預設是開啟熱更新的。原則上,在部署模式下不建議開啟檔案監控,一方面有效能損耗,另外一方面對檔案所做的任何修改都需要確認無誤才能進行更新部署。
熱更新的預設配置如下:
'hot_update' => [
'enable' => env('APP_DEBUG', false),
'name' => ['*.php'],
'include' => [app_path()],
'exclude' => [],
],
當我們在應用的根目錄下定義一個特殊的 .env
環境變數檔案,裡面設定了 APP_DEBUG=true
會預設開啟熱更新,你也可以直接把 enable
設定為true
。
連線池
Think-Swoole
實現了資料庫連線池功能,包括 MySQL
、Redis
等。
使用連線池要先開啟 Swoole
一鍵協程,需要配置如下引數:
'coroutine' => [
'enable' => true,
'flags' => SWOOLE_HOOK_FLAGS,
],
連線池配置引數如下:
'pool' =>[
'db' => [
'enable' => true,
'max_active' => 3,
'max_wait_time' => 5,
],
'cache' => [
'enable' => true,
'max_active' => 3,
'max_wait_time' => 5,
],
],
引數說明:
enable
:是否啟用連線池max_active
:最大連線數,超過將不再新建連線max_wait_time
:超時時間,單位為秒
max_active
和max_wait_time
需要根據自身業務和環境進行適當調整,最大化提高系統負載