Перейти к содержимому
docs.
WORKSPACE

Документации проектов

Открыть каталог проектов
Localzet ServerАсинхронный PHP-серверTriangleФреймворк и компонентыMIX IDИдентификация и интеграцииHack APIПубличные API хакатонаACNПроект и компонентыUserlay / UserNetПроект и компоненты✓AxiomПроект и компонентыМесседжинг через почтуПроект и компонентыLWT / JWT / JOSEПроект и компонентыФинансовая аналитика KimaiПроект и компонентыМультипарадигмальная БДПроект и компонентыZorin PlatformПроект и компонентыZorin TrustПроект и компонентыFloraScope / VegwatchПроект и компонентыaegis-qДокументация проектаaevumdbДокументация проектаauditДокументация проектаauto-invest-managerАвтотрейдерcaine-companionДокументация проектаcertbot-cloudflareДокументация проектаClusterLocalzet Server / ClustercmdveilДокументация проектаConsolePHP CLICronБиблиотеки Localzet Serverdata-connectorДокументация проектаdevice-controlDevice Controlenn-projectДокументация проектаEventsБиблиотеки Localzet ServerflowsintДокументация проектаforgeДокументация проектаHttpClientБиблиотеки Localzet ServerinterpreterСобственный языкinvariaДокументация проектаkeynotesДокументация проектаknotrouteKnotroutelaravel-personal-analyticsДокументация проектаlocalzet-osДокументация проектаmeridianДокументация проектаMQTTБиблиотеки Localzet Servernano-kernelСобственная ОСNoterДокументация проектаpersonal-analyticsДокументация проектаProxyБиблиотеки Localzet ServerPSRБиблиотеки Localzet ServerPSR-7Библиотеки Localzet Serverrschs-monitorДокументация проектаsemsealДокументация проектаshardsealДокументация проектаSocketIOБиблиотеки Localzet ServerSOCKS5Библиотеки Localzet Serverstandalone-analyticsДокументация проектаstatic-php-cliДокументация проектаStorageБиблиотеки Localzet ServersutureДокументация проектаtempoweaveДокументация проектаttsСинтез речиTunnelБиблиотеки Localzet Serverui-kitUI KitvesperДокументация проектаWebAnalyzerWebAnalyzerzorin-access-brokerДокументация проектаzorin-authority-brokerДокументация проектаzorin-authority-sdk-phpДокументация проектаzorin-authority-sdk-pythonДокументация проектаzorin-authority-sdk-tsДокументация проектаzorin-client-intelДокументация проектаzorin-device-core-aospДокументация проектаzorin-host-agentДокументация проектаzorin-native-labДокументация проектаzorin-nodeДокументация проектаzorin-opsДокументация проектаdonstu-python-sdkДокументация проектаfloortraceFloortraceserver-rsLocalzet Server / Cluster
Каталог
Документация/Userlay / UserNet

xray-grpc-php

PHP-клиенты gRPC API Xray и классы protobuf-сообщений. Нужны ext-grpc, grpc/grpc и google/protobuf из composer.json.

Окно терминала
composer require localzet/xray-grpc
composer check-platform-reqs
КлассНазначение
Xray\App\Proxyman\Command\HandlerServiceClientУправление inbound/outbound обработчиками
Xray\App\Log\Command\LoggerServiceClientУправление журналированием
Xray\App\Router\Command\RoutingServiceClientМаршруты и балансировщики
Xray\App\Stats\Command\StatsServiceClientСчётчики трафика и системная статистика
Xray\Core\App\Observatory\Command\ObservatoryServiceClientСостояние наблюдаемых outbound

Конструктор принимает адрес и channel options. Unary RPC возвращает объект вызова; wait() возвращает пару response/status. Проверяйте status.code до чтения полей ответа. Call option timeout задаётся в микросекундах.

GetStats читает один счётчик по имени; QueryStats выбирает счётчики по pattern; GetSysStats возвращает показатели процесса. Поле reset управляет сбросом счётчика при чтении. В примере ниже reset=false, а deadline равен одной секунде. Замените inbound tag example на свой и включите соответствующие счётчики/API в конфигурации Xray.

Канал без TLS в примере адресован loopback. Для удалённого API используйте защищённый транспорт и ограничьте доступ: это административный интерфейс Xray.

Методы клиентов и поля сообщений.

<?php
declare(strict_types=1);
use Grpc\ChannelCredentials;
use Xray\App\Stats\Command\GetStatsRequest;
use Xray\App\Stats\Command\StatsServiceClient;
require __DIR__ . '/vendor/autoload.php';
$client = new StatsServiceClient('127.0.0.1:10085', [
'credentials' => ChannelCredentials::createInsecure(),
]);
$request = new GetStatsRequest();
$request->setName('inbound>>>example>>>traffic>>>uplink');
$request->setReset(false);
[$response, $status] = $client->GetStats($request, [], ['timeout' => 1_000_000])->wait();
if ($status->code !== Grpc\STATUS_OK) {
throw new RuntimeException($status->details);
}
$stat = $response->getStat();
if ($stat === null) {
throw new RuntimeException('No statistic returned');
}
echo $stat->getValue(), PHP_EOL;

Исходный код · AGPL-3.0