timurikvx / rac-worker
Библиотека обертка для работы с компонентой RAS/RAC для 1С:Предприятия 8
Requires
- php: >=8.0
Requires (Dev)
- tightenco/collect: ^9.52
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); }