增加 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;
use App\Http\Controllers\Controller;
use App\Support\Cluster;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
class ServerController extends Controller
{
public function __invoke(Request $request)
public function module_reports(Request $request)
{
$servers = Cache::get('servers', []);
@ -21,4 +22,10 @@ public function __invoke(Request $request)
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);
}
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

View File

@ -20,10 +20,12 @@
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::resource('tasks', TaskController::class)->only(['index', 'show']);
Route::get('forum/announcements', [ForumController::class, 'pinned']);