ousaa / sites-diversion-package
description
v2.1.0
2025-05-28 07:34 UTC
Requires
- php: >=7.4
- ext-json: *
- ext-redis: *
- topthink/framework: 5.1.*|^6.0|^8.0
Requires (Dev)
- phpunit/phpunit: ^9.6
README
依赖tp框架(支持版本5.1/6/8)
环境变量配置
需要在项目下加上对应的 redis 配置,必须和分流系统一致
# diversion redis环境
DIVERSION_REDIS_HOST=127.0.0.1
DIVERSION_REDIS_PORT=6379
DIVERSION_REDIS_PASSWORD=
DIVERSION_REDIS_DB=0
接入站群逻辑代码参考(以 TP5.1 为例)
在 route.php 文件中,其他路由配置之前,添加 「分流系统的管理配置」的代码
// 获取分类配置
$diversionConfigs = LinkCacheLogic::getCache();
foreach ($item['domains'] as $domain) {
Route::domain([$domain], function () use ($routeConfigPath, $rootPath, $item, $domain, $diversionConfigs) {
// 通过全局变量注入站点标识
$GLOBALS['SITE_KEY'] = $item['site_key'];
// 分流系统的管理配置
if (in_array($domain, array_keys($diversionConfigs))) {
$config = $diversionConfigs[$domain];
$onlyDomain = $config['onlyDomain'];
$uriItems = $config['uriItems'];
$matchUris = array_keys($uriItems);
if ($matchUris) {
foreach ($matchUris as $matchUri) {
Route::get($matchUri, route_to_method(\app\common\controller\DiversionController::class, 'handleDiversion'));
}
}
if ($onlyDomain) {
Route::get('/:any', route_to_method(\app\common\controller\DiversionController::class, 'handleDiversion'))
->pattern(['any' => '[\S]*']);
}
}
// ... 原来的站群配置
}
}
DiversionController
class DiversionController extends CommonBaseController
{
public function handleDiversion(Request $request)
{
$uri = $request->url();
$host = $request->host();
$scheme = $request->scheme();
return DiversionService::getInstance()->handleDiversion($host, $uri, $scheme);
}
}
如果需要修改这个包的内容,可以改成本地调试
在 composer.json
里面添加,url
改成你本地对应目录的绝对路径
"repositories": [
{
"type": "path",
"url": "/Volumes/code/php_package/sites-diversion-package",
"options": {
"symlink": true
}
}
],
包的版本配置改成 dev-master
"ousaa/sites-diversion-package": "dev-master"
然后更新即可
composer update ousaa/sites-diversion-package
修改和调试完成之后,发布 ousaa/sites-diversion-package
的版本。然后删除 composer.json
里面 repositories
的部分, dev-master
改成最新版本即可