1、安裝think-gateway:composer require evan-li/think-gateway
2、項目新建應用(eg:application/worker)
3、處理gateway配置文件,將下載的think-gateway裏面的starter文件夾複製到worker應用下,如圖:
config文件爲配置信息,Events文件爲事件處理類,其他是啓動時需要註冊的文件不做贅述
4、添加啓動服務控制器,在worker應用下新建Start控制器(控制器命名隨意)
<?php
namespace app\worker\controller;
use Workerman\Worker;
use think\gateway\Utils;
class Start extends Worker
{
public function __construct($socket_name = '', array $context_option = array())
{
parent::__construct($socket_name, $context_option);
Utils::checkExtension();
// 標記是全局啓動
define('GLOBAL_START', 1);
// 加載所有/start/start_*.php,以便啓動所有服務
foreach(glob(__DIR__ . '/../starter/start_*.php') as $start_file)
{
require_once $start_file;
}
// 運行所有服務
Worker::runAll();
}
}
5、添加thinkphp入口文件(server.php用來實現整合後啓動服務)
<?php
namespace think;
// 定義應用目錄
define('APP_PATH', __DIR__ . '/../application/');
// 加載基礎文件
require __DIR__ . '/../thinkphp/base.php';
// 執行應用並響應,此處一定要綁定默認模塊,否則默認執行tp配置文件中默認訪問模塊
Container::get('app')->bind('worker/Start')->path(APP_PATH)->run()->send();
6、相應操作命令(與正常的gateway相同,此處做記錄)
1)啓動
以debug(調試)方式啓動
php server.php start
以daemon(守護進程)方式啓動
php server.php start -d
2)停止
php server.php stop
3)重啓
php server.php restart
4)平滑重啓
php server.php reload
5)查看狀態
php server.php status
tp5.0的整合gateway可以參考一下:https://github.com/evan-li/think-gateway-demo