增加 Cluster Nodes

This commit is contained in:
iVampireSP.com 2023-01-05 13:46:05 +08:00
parent fa41bf5da3
commit c04c83ec67
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132
3 changed files with 37 additions and 4 deletions

View File

@ -3,12 +3,13 @@
namespace App\Http\Controllers\Api; namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Support\Cluster;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
class ServerController extends Controller class ServerController extends Controller
{ {
public function __invoke(Request $request) public function module_reports(Request $request)
{ {
$servers = Cache::get('servers', []); $servers = Cache::get('servers', []);
@ -21,4 +22,10 @@ public function __invoke(Request $request)
return $this->success($servers); return $this->success($servers);
} }
public function nodes() {
$nodes = Cluster::nodes(true);
return $this->success($nodes);
}
} }

View File

@ -97,9 +97,33 @@ public static function forever($key, $value): void
self::set($key, $value, -1); self::set($key, $value, -1);
} }
public static function hget($key, $value, $default = null): string|array|null public static function hget($key, $hashKey, $default = []): string|array|null
{ {
return Redis::hget($key, $value, $default); $value = Redis::hget(self::$prefix . $key, $hashKey);
return $value ?: $default;
}
public static function hgetAll($hashKey, $default = []): array
{
$value = Redis::hgetall(self::$prefix . $hashKey);
return $value ?: $default;
}
public static function nodes($hide_ip = false): array
{
$nodes = self::hgetAll('nodes');
foreach ($nodes as $key => $node) {
$nodes[$key] = json_decode($node, true);
if ($hide_ip) {
unset($nodes[$key]['ip']);
}
}
return $nodes;
} }
public static function registerThisNode($report = true): void public static function registerThisNode($report = true): void

View File

@ -20,10 +20,12 @@
Route::resource('balances', BalanceController::class); Route::resource('balances', BalanceController::class);
Route::get('servers', ServerController::class);
Route::get('servers', [ServerController::class, 'module_reports']);
Route::get('nodes', [ServerController::class, 'nodes']);
Route::get('modules', [ModuleController::class, 'index']); Route::get('modules', [ModuleController::class, 'index']);
Route::resource('tasks', TaskController::class)->only(['index', 'show']); Route::resource('tasks', TaskController::class)->only(['index', 'show']);
Route::get('forum/announcements', [ForumController::class, 'pinned']); Route::get('forum/announcements', [ForumController::class, 'pinned']);