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