讓TP5.0在SWOOLE上飛起來
阿新 • • 發佈:2018-11-17
TP-SWOOLE
目前,TP5.1官方已經提供了think-swoole2.0,整合程度以前優雅很多,不過5.0的整合方式確實有些雞肋。所以看了下2.0,為5.0開發了一個擴充套件包,可以採用composer下載
composer require xaviertony/xavier-swoole
開發之前,需要先熟悉TP5.0的生命週期,不然就無從下手了。
由於TP主要在Apache或者NGINX下執行,每次執行結束都會進行釋放,而swoole則是常住記憶體,TP5很多類都由單例實現,所以難免會入坑,其中大坑主要是request,由於啟動後請求被例項化,如果不刪除請求勢力,以後每次都是採用這個例項,造成無法正常訪問頁面,因為每次請求達到後需要先將請求例項刪除
public static function deletethis()
{
if (!is_null(self::$instance)) {
self::$instance=null;
}
}
第三方包的配置檔案必須在application/extra下,檔名為swoole.php
<?php return [ 'host' => '0.0.0.0', // 監聽地址 'port' => 9501, // 監聽埠 'mode' => '', // 執行模式 預設為SWOOLE_PROCESS 'sock_type' => '', // sock type 預設為SWOOLE_SOCK_TCP 'app_path' => getcwd() . '/application', // 應用地址 如果開啟了 'daemonize'=>true 必須設定(使用絕對路徑) 'file_monitor' => false, // 是否開啟PHP檔案更改監控(除錯模式下自動開啟) 'file_monitor_interval' => 2, // 檔案變化監控檢測時間間隔(秒) 'file_monitor_path' => [], // 檔案監控目錄 預設監控application和config目錄 // 可以支援swoole的所有配置引數 'pid_file' => getcwd() . '/runtime/swoole.pid', 'log_file' => getcwd() . '/runtime/swoole.log', 'task_worker_num' => 20, //'document_root' => getcwd() . 'public', //'enable_static_handler' => true, 'daemonize' => 1,//守護 'worker_num' => 8, //worker process num 'max_request' => 10000, ];
啟動命令
php think swoole start
守護啟動
php think swoole start -d
停止服務
php think swoole stop