timurikvx/rac-worker

Библиотека обертка для работы с компонентой RAS/RAC для 1С:Предприятия 8

v1.0.2 2025-09-20 11:19 UTC

This package is auto-updated.

Last update: 2025-09-20 11:20:41 UTC


README

Библиотека обертка для работы с компонентами RAS/RAC для платформы 1С Предприятие 8

С помощью нее можно взаимодействовать с:

  • Администраторами
  • Кластерами
  • Рабочими серверами кластера
  • Рабочими процессами кластера
  • Соединениями
  • Сеансами

Установка

Для установки используйте команду

composer require timurikvx/rac-worker

Использование

Для авторизации при работе с RAC используются классы

Администратор сервера

$clusterAgent = new ClusterAgent('name', 'password');

Администатор кластера

$clusterUser = new ClusterUser('name', 'password');

Администатор базы данных

$infobaseUser = new InfobaseUser('name', 'password');

Основной класс RacWorker

$version = '8.3.23.2137'; //Версия 1С платформы
$worker = new RacWorker($version, 'localhost', 1545, RacArchitecture::X86_64);

Архитектура приложения может быть

RacArchitecture::X86_64
RacArchitecture::X64

Работа с администраторами сервера

Список администраторов

$error = '';
$agents = $worker->agent->list($clusterAgent, $error); //array<AgentEntity::class>

Добавление администратора

$error = '';
$agent = AgentEntity::create('Timmy', 'при оываыва ываываыв аыва');
$agent->setPassword('password');
$agent->setOsAuth('\\\\MACHINE\\UserName');
$worker->agent->add($agent, $clusterAgent, $error);

где $clusterAgent - уже существующий администратор, если он есть

Удаление администратора

$error = '';
$worker->agent->remove($agent, $clusterAgent, $error);

Работа с Кластерами

Список кластеров

$clusters = $worker->cluster->list(); //array<ClusterEntity::class>

Получить первый кластер

$cluster = $worker->cluster->first(); //ClusterEntity::class|null

Получение кластера по имени

$cluster = $worker->cluster->getByName('Локальный кластер'); //ClusterEntity::class|null

Установка администоратора кластера

Если у вас уставнолен пароль на кластер или указаны основные администраторы нужно указат их, если у вас нет администраторов этот пункт можно пропустить или любой из методов

$cluster->setUser($clusterUser); //администратор кластера
$cluster->setAgent($clusterAgent); //основной администратор

После этого у вас есть доступ к базам данных и кластерам

Создание кластера

$error = '';
$newCluster = ClusterEntity::create('localhost', 1800); //host, port
$newCluster->setName('Имя кластера');
$worker->cluster->add($newCluster, $error); //bool

Изменение кластера

$error = '';
$cluster->setLifetimeLimit(220);
$cluster->setMaxMemorySize(4123);
$cluster->setMaxMemoryTimeLimit(640);
$cluster->setSecurityLevel(300);
$cluster->setSessionFaultToleranceLevel(143);
$worker->cluster->update($cluster, $error); //bool

Удаление кластера

$error = '';
$worker->cluster->remove($cluster, $error); //bool

Работа с администратором кластера

Это администраторы относящиеся к тому кластеру в который они добавлены, а основные администраторы защищают все кластера

Список администраторов кластера

$error = '';
$list = $worker->cluster->adminList($cluster, $error); //array<ClusterAdminEntity::class>

Добавление администратора кластера

$error = '';
$admin = ClusterAdminEntity::create('Имя администратора', 'Описание');
$admin->setPassword('пароль');
$admin->setOsAuth('имя пользователя ОС'); // для примера \\COMP\User1
$worker->cluster->adminAdd($cluster, $admin, $error);

где setOsAuth - установка авторизации ОС, в этом случае пароль передавать на нужно

Удаление администратора кластера

$error = '';
$worker->cluster->adminRemove($cluster, $admin, $error);

где $admin - сущность ClusterAdminEntity::class

Работа с Базами данных

Список баз данных кластера

$error = '';
$infobases = $worker->infobase->list($cluster, $error); //array<InfobaseShortEntity::class>

$error - выходной параметр если возникнет ошибка

Базу данных по имени

$error = '';
$infobase = $worker->infobase->getByName('Имя базы данных', $cluster, $error); //InfobaseShortEntity::class|null

Первая база данных

$error = '';
$infobase = $worker->infobase->first($cluster, $error); //InfobaseShortEntity::class|null

Расширенная информация о базе данных

$error = '';
$infobase = $worker->infobase->info($cluster, $infobase, $error); //InfobaseEntity::class|null

После получения полного описания заново утсановите пользователя базы данных если будете с ней работать

$infobase->setUser($infobaseUser);

Изменение базы данных

$infobase->setDeniedFrom(''); //Начало блокировки сеансов \DateTime
$infobase->setDeniedTo(''); //Завершение блокировки сеансов \DateTime
$infobase->setDescription('Описание базы'); //Изменить описание базы
$infobase->setScheduledJobsDeny(true); //Блокировка регламетных заданий
$infobase->setSessionsDeny(true); //Блокировка сеанса
$infobase->setDeniedMessage('message');//Собщение пользователю
$infobase->setDeniedParameter(''); //Параметр блокировки
$worker->infobase->update($cluster, $infobase, $error); //bool

Рабочие серверы кластера

Список серверов кластера

$error = '';
$servers = $worker->server->list($cluster, $error); //array<ServerEntity::class>

Сервер по имени

$error = '';
$infobase = $worker->server->getByName("Имя сервера", $cluster, $error); //ServerEntity::class|null

Первый сервер

$error = '';
$infobase = $worker->server->first($cluster, $error); //ServerEntity::class|null

Добавление сервера

$error = '';
$server = ServerEntity::create('Имя сервера', 'localhost', 1600);
$server->setInfobasesLimit(16);
$server->setPortMin(1600);
$server->setPortMax(1700);
$worker->server->add($cluster, $server, $error);

Изменение сервера

$error = '';
$server->setConnectionsLimit(998000);
$server->setInfobasesLimit(15000);
$server->setSafeCallMemoryLimit(7770000);
$server->setCriticalTotalMemory(450000);
$server->setCriticalTotalMemory(888000);
$server->setTemporaryAllowedTotalMemory(999000);
$server->setTemporaryAllowedTotalMemoryTimeLimit(300000);
$worker->server->update($cluster, $server, $error);

Будьте аккуратны при изменении параметров сервера - это может привести к его неработоспособности!

Удаление сервера

$error = '';
$worker->server->remove($cluster, $server, $error);

Управление рабочими процессами кластера

Список процессов

$error = '';
$processes = $worker->process->list($cluster, $server, $error); //array<ProcessEntity::class>

Соединения с кластером

Список соединений

$error = '';
$connections = $worker->connection->list($cluster, $process, $infobase, $error); //array<ConnectionEntity::class>

Список соединений по типу приложения

$error = '';
$connections = $worker->connection->getByAppID('1CV8', $cluster, $process, $infobase, $error); //array<ConnectionEntity::class>

Список соединений по имени компьютера

$error = '';
$connections = $worker->connection->getByHost('Имя компьютера', $cluster, $process, $infobase, $error); //array<ConnectionEntity::class>

Список соединений по пользователю

$error = '';
$connections = $worker->connection->getByUser('Имя пользователя', $cluster, $process, $infobase, $error); //array<ConnectionEntity::class>

Удаление соединений

$error = '';
foreach ($list as $connection) {
    $connection->remove($error);
    //или
    $worker->connection->remove($cluster, $process, $connection, $infobase->getInfobaseUser(), $error);
}

Сеансы баз данных

Полный список сеансов

$error = '';
$sessions = $worker->session->list($cluster, $infobase, $error); //array<SessionEntity::class>

Сеансы по имени пользователя

$error = '';
$sessions = $worker->infobase->getByUser("Имя сервера", $cluster, $error); //array<SessionEntity::class>

Сеансы по имени хоста

$error = '';
$sessions = $worker->infobase->getByHost("Имя сервера", $cluster, $error); //array<SessionEntity::class>

Сеансы по типу приложения

$error = '';
$sessions = $worker->infobase->getByAppID("Имя сервера", $cluster, $error); //array<SessionEntity::class>

Удаление сеансов с базой данных

$error = '';
foreach ($sessions as $session){
    $session->remove('Сообщение пользователя', $error);
    //или
    $worker->session->remove($cluster, $session, 'Сообщение пользователя', $error);
}