Download the PHP package besnovatyj/yii2-cms-info without Composer

On this page you can find all versions of the php package besnovatyj/yii2-cms-info. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package yii2-cms-info

System Information Widget - Полная документация

Оглавление


Обзор

Виджет системной информации предоставляет комплексный мониторинг сервера в режиме реального времени через веб-интерфейс администратора.

Основные возможности

✅ Мониторинг в реальном времени

✅ Метрики системы

✅ Метрики сервисов

✅ Docker метрики

✅ Визуализация

✅ Дополнительные функции


Архитектура

Clean Architecture Pattern

Проект следует принципам Clean Architecture с четким разделением слоев:

Принципы разделения ответственности

  1. Providers - отвечают только за сбор raw данных из источников
  2. Service - бизнес-логика, агрегация данных из провайдеров
  3. Controller - HTTP слой, валидация запросов, отправка ответов
  4. Frontend Components - UI логика, рендеринг, управление состоянием

Компоненты Backend

1. Metric Providers

BaseMetricProvider

Абстрактный базовый класс для всех провайдеров.

Расположение: /app/Besnovatyj/Info/providers/BaseMetricProvider.php

Ключевые методы:

Особенности:

SystemMetricProvider

Собирает метрики системы Linux из /proc.

Расположение: /app/Besnovatyj/Info/providers/SystemMetricProvider.php

Источники данных:

Прим.: обёртка phpUname() и явные проверки function_exists() для parse_ini_file/disk_*_space защищают от FPM-hardening (disable_functions) — при отключённой функции блок деградирует, а не роняет весь сбор метрик.

Возвращаемая структура:

PhpMetricProvider

Собирает информацию о PHP и его расширениях.

Расположение: /app/Besnovatyj/Info/providers/PhpMetricProvider.php

Источники данных:

Возвращаемая структура:

DockerMetricProvider

Собирает метрики Docker через Docker CLI.

Расположение: /app/Besnovatyj/Info/providers/DockerMetricProvider.php

Требования:

Команды:

Возвращаемая структура:

Методы:

DatabaseMetricProvider

Собирает статистику MySQL/MariaDB.

Расположение: /app/Besnovatyj/Info/providers/DatabaseMetricProvider.php

Источники данных:

Возвращаемая структура:

RedisMetricProvider

Собирает статистику Redis через Yii2 Redis компонент.

Расположение: /app/Besnovatyj/Info/providers/RedisMetricProvider.php

Источники данных:

Возвращаемая структура:

NginxMetricProvider

Собирает информацию о веб-сервере Nginx.

Расположение: /src/providers/NginxMetricProvider.php

Источники данных (без shell, работает под FPM-hardening):

Резервные источники (если бинарь nginx доступен из PHP и shell_exec не в disable_functions):

Если бинарь nginx недоступен из PHP-процесса (nginx и PHP разнесены, либо shell_exec отключён), резервные вызовы тихо деградируют в null — версия берётся из SERVER_SOFTWARE.

Возвращаемая структура:

Состояния tls.state (для отладки конфигурации):

state Значение Причина
ok TLS завершается на nginx, есть протокол/шифр всё настроено
plain SSL_* проброшены, но пустые запрос к nginx без TLS (nginx слушает plain HTTP или TLS терминируется выше по стеку)
absent ключей SSL_* нет в $_SERVER fastcgi_param не добавлен в этот location/vhost, либо nginx не перечитан

Проброс живого TLS (опционально). Стоковый fastcgi_params не передаёт TLS-параметры. Чтобы блок tls.state = ok заполнялся, добавьте внутри location ~ \.php$ (nginx наследует fastcgi_param от родителя только если в location нет собственных — а он есть):

Это read-only, несекретные значения (клиент их и так знает) — безопасно для production. Если TLS терминируется до nginx (reverse-proxy, балансировщик), эти переменные будут пустыми — провайдер покажет tls.state = plain, это ожидаемо.

ApplicationMetricProvider

Собирает информацию о Yii2 приложении.

Расположение: /app/Besnovatyj/Info/providers/ApplicationMetricProvider.php

Источники данных:

Возвращаемая структура:

2. Service Layer

SysInfoService

Центральный сервис для агрегации всех метрик.

Расположение: /app/Besnovatyj/Info/services/SysInfoService.php

Инжектируемые зависимости (через DI):

Ключевые методы:

getAllMetrics(): array Возвращает полные метрики всех провайдеров.

getRealtimeMetrics(): array Возвращает только динамические метрики для auto-refresh (легковесный).

Отличие от getAllMetrics:

exportToJson(): string Форматирует все метрики в JSON с pretty print.

exportToCsv(): string Конвертирует метрики в CSV формат (плоская структура).

3. Controller Layer

SysInfoController

HTTP контроллер для обработки запросов.

Расположение: /app/Besnovatyj/Info/controllers/backend/SysInfoController.php

Endpoints:

GET /info/backend/sys-info/index

Отображает главную страницу виджета.

Возвращает: HTML страницу с виджетом


GET /info/backend/sys-info/api-metrics

Полные метрики всех провайдеров.

Возвращает: JSON (~2.5 Кб)


GET /info/backend/sys-info/api-realtime

Легковесные метрики для auto-refresh.

Возвращает: JSON (~500 байт)


GET /info/backend/sys-info/api-docker-logs?container=name&lines=100

Логи Docker контейнера.

Параметры:

Возвращает: JSON


GET /info/backend/sys-info/export-json

Экспорт метрик в JSON файл.

Возвращает: Файл metrics-2026-01-19-010000.json


GET /info/backend/sys-info/export-csv

Экспорт метрик в CSV файл.

Возвращает: Файл metrics-2026-01-19-010000.csv

4. Dependency Injection

Container Configuration

Расположение: /app/Besnovatyj/Info/config/container.php

Подключение в Module.php:


Компоненты Frontend

TypeScript Architecture

Проект использует современный TypeScript + Vite без jQuery.

Структура:

1. index.ts

Entry point приложения.

Особенности:

2. SysInfoWidget.ts

Главный класс виджета.

Зависимости:

Поля класса:

Lifecycle:

Ключевые методы:

setupEventHandlers() Привязывает обработчики к кнопкам:

loadInitialMetrics() Загружает полные метрики через apiService.getAllMetrics()

updateRealtimeMetrics() Загружает легковесные метрики через apiService.getRealtimeMetrics()

updateUI(metrics) Обновляет DOM со всеми метриками:

3. ApiService.ts

HTTP клиент на базе Fetch API.

Конфигурация:

Методы:

getAllMetrics(): Promise<any>

getRealtimeMetrics(): Promise<any> То же самое, но для realtime endpoint.

getDockerLogs(container: string, lines: number): Promise<any>

Обработка ошибок:

4. MetricsRenderer.ts

Отвечает за рендеринг метрик в DOM.

Ключевые методы:

renderOverview(metrics) Рендерит вкладку Overview - краткая сводка.

Проверки:

renderSystem(metrics) Вкладка System - детальная информация о сервере и CPU.

renderResources(metrics) Вкладка Resources - память, диск, Load Average, сеть.

Особенности:

renderServices(metrics) Вкладка Services - PHP, Nginx, MySQL, Redis, Yii2.

Карточка Nginx показывает бейдж протокола (зелёный HTTP/2 или жёлтый с фактическим протоколом) и строку TLS по nginx.tls.state: ok → «протокол / шифр», plain → «запрос без TLS», absent → предупреждение «SSL_* не проброшен».

Проверка наличия полных данных:

Важно: При realtime обновлении сервисы не имеют полных данных, поэтому метод пропускает рендеринг если данных нет (не очищает DOM).

renderDocker(docker) Вкладка Docker - контейнеры с кнопками логов.

updateTimestamp(timestamp) Обновляет timestamp последнего обновления.

updateStatus(success, message?) Обновляет статус индикатор (зеленый/красный).

Вспомогательные методы:

renderHtml(elementId, html)

getProgressColor(percent)

5. ChartManager.ts

Управление графиками Chart.js.

Создание графиков:

Добавление точек данных:

Расчет CPU процента:

6. RealtimeUpdater.ts

Таймер для auto-refresh.

7. DockerLogsModal.ts

Модальное окно для просмотра логов Docker.

8. SettingsManager.ts

Управление пользовательскими настройками через localStorage.

9. ErrorHandler.ts

Централизованная обработка ошибок.

Build Configuration

package.json

tsconfig.json

vite.config.ts


API Endpoints

Полный список

Метод URL Параметры Описание Размер ответа
GET /info/backend/sys-info/index - Главная страница HTML
GET /info/backend/sys-info/api-metrics - Полные метрики ~2.5 KB JSON
GET /info/backend/sys-info/api-realtime - Realtime метрики ~500 B JSON
GET /info/backend/sys-info/api-docker-logs container, lines Логи контейнера Variable JSON
GET /info/backend/sys-info/export-json - Экспорт JSON File download
GET /info/backend/sys-info/export-csv - Экспорт CSV File download

Детали

GET /api-metrics

Response:

GET /api-realtime

Response:

Отличия:

GET /api-docker-logs

Query параметры:

Response:

Error response:


Конфигурация

Widget Configuration

Виджет конфигурируется через атрибут data-config:

Структура конфигурации:

Asset Bundle

SysInfoAsset.php:

Порядок загрузки:

  1. Yii2 core JS
  2. Bootstrap 5 CSS + JS
  3. Chart.js (CDN)
  4. Собственный JS bundle (ES6 module)

Метрики

System Metrics

CPU:

Memory:

Disk:

Load Average:

Network:

Temperature:

Uptime:

PHP Metrics

Nginx Metrics

Docker Metrics

Database Metrics

Redis Metrics

Application Metrics


Безопасность

Backend Security

1. CSRF Protection Все POST запросы проверяют CSRF токен:

2. Access Control Контроллер защищен фильтром доступа:

3. Docker Security

Используется socket-proxy вместо прямого доступа к Docker socket:

Безопасность:

4. Shell Command Execution

Все shell команды выполняются безопасно:

Безопасность:

5. SQL Injection Protection

Все SQL запросы используют параметризованные запросы:

6. XSS Protection

Frontend использует безопасные методы:

Frontend Security

1. Content Security Policy

Рекомендуется настроить CSP headers:

2. HTTPS Only

Все запросы должны идти через HTTPS в production.

3. localStorage Security

Settings хранятся в localStorage:


Производительность

Backend Optimization

1. No Caching Strategy

Метрики НЕ кэшируются намеренно:

2. Lightweight Realtime Endpoint

api-realtime возвращает только динамические данные:

3. Efficient Data Collection

Провайдеры используют оптимизированные методы:

4. Shell Command Timeout

Все команды имеют timeout 5 секунд:

5. Database Query Optimization

Используем агрегирующие запросы:

Frontend Optimization

1. Chart.js Data Limiting

Графики хранят максимум 60 точек:

60 точек × 3 секунды = 3 минуты истории

2. Chart Update Without Animation

3. Debouncing Auto-refresh

Realtime updater использует интервал 3 секунды:

4. Lazy Loading Docker Logs

Логи загружаются только при открытии модалки:

5. ES6 Modules

TypeScript компилируется в ES6 модули:

6. CDN для Chart.js

Chart.js загружается с CDN:

Build Optimization

Vite Production Build:

Результат:

Оптимизации:


Troubleshooting

Общие проблемы

1. "Array to string conversion"

Симптом: Ошибка в /app/Besnovatyj/Info/widgets/sysinfo/views/index.php:13

Причина: Попытка вывести массив как строку в HTML атрибуте

Решение:

2. "TypeError: can't access property 'hostname', e is undefined"

Симптом: Ошибка в MetricsRenderer.ts:40 при realtime обновлении

Причина: Realtime endpoint не возвращает статические данные (server, cpu info)

Решение:

3. "Chart.js is not loaded"

Симптом: Предупреждение в консоли, графики не отображаются

Причина: Chart.js не подключен в Assets

Решение:

4. "Docker недоступен"

Симптом: Вкладка Docker показывает "Docker недоступен"

Причина: Docker CLI не установлен или нет доступа к socket-proxy

Решение: См. DOCKER-SETUP.md

5. "[object Object]" в данных сервисов

Симптом: Вместо значений показывается "[object Object]"

Причина: Неправильный путь к вложенным свойствам

Решение:

6. TypeScript compilation errors

Симптом:

Решение:

7. Services данные исчезают при auto-refresh

Симптом: При автообновлении пропадает информация о PHP, MySQL, Redis

Причина: Realtime endpoint не возвращает полные данные сервисов

Решение: Методы рендеринга должны проверять наличие данных:

Debug Mode

Включите логирование в консоль:

Все компоненты логируют свои действия с префиксом [ComponentName].

Network Tab

Проверьте запросы в DevTools → Network:

Успешный запрос:

Неуспешный запрос:

PHP Logs

Проверьте логи приложения:

Все ошибки провайдеров логируются через Yii::error().


Заключение

Виджет системной информации - это полноценное решение для мониторинга сервера с современной архитектурой:

✅ Clean Architecture - четкое разделение слоев ✅ Dependency Injection - все зависимости через DI контейнер ✅ TypeScript + Vite - современный frontend без jQuery ✅ Chart.js - красивые графики в реальном времени ✅ Docker Security - безопасный доступ через socket-proxy ✅ No Caching - всегда актуальные данные ✅ Responsive UI - Bootstrap 5 с адаптивным дизайном ✅ Extensible - легко добавить новые провайдеры метрик

Производительность:

Безопасность:

Проект готов к использованию в production (кроме Docker метрик на dev-only серверах).


All versions of yii2-cms-info with dependencies

PHP Build Version
Package Version
Requires besnovatyj/yii2-cms-kernel Version ^1.0
besnovatyj/yii2-cms-contracts Version ^3.0
php Version >=8.4
yiisoft/yii2 Version ~2.0.0
yiisoft/yii2-bootstrap5 Version ~2.0.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package besnovatyj/yii2-cms-info contains the following files

Loading the files please wait ...