Files
urbackup/MEMORY.md
T
2026-05-22 11:59:05 +02:00

2.2 KiB

MEMORY.md - Stato del Plugin UrBackup

Ultima modifica: 22/05/2026

Performance - Asset Definition vs Computer

Problema

Gli Asset Definition custom (GLPI 11) sono 2-5x più lenti dei Computer nativi nel caricamento del tab UrBackup.

Causa

L'overhead è in GLPI 11 core, non nel plugin:

  1. Asset::__construct() — itera 30+ Capacity classi per ogni istanza
  2. Asset::post_getFromDB() — decodifica JSON custom fields e li processa
  3. eval() autoloading — le classi concrete sono definite via eval() a runtime

Ottimizzazioni applicate

  1. AssetTab.php::loadApiData() — letto $item->fields['name'] direttamente invece di chiamare ServerAsset::getAssetName() che faceva una seconda getFromDB() ridondante
  2. AssetTab.php::startBackup(), saveInternetMode(), saveDefaultDirs(), showServerLinkedBlock() — stesso pattern, $item->fields['name'] al posto di getAssetName()
  3. Server.php::showMissingClientsTab() — batch loading IP e gruppi: batchLoadIps() (1 query per itemtype vs 1 per riga) + batchLoadGroups() (1 query per itemtype vs 1 per riga)

Architettura

  • src/Capacity/UrBackupCapacity.php — registra AssetTab via CommonGLPI::registerStandardTab() in onClassBootstrap()
  • setup.php — registra capacità, CSS, JS, hook
  • src/AssetTab.php — display tab content + tab interni (Stato/Azioni/Info-Log)
  • src/ServerAsset.php — gestione collegamenti asset-server
  • src/Config.php — itemtype enabled check
  • src/UrbackupApiClient.php — client API con caching in-memory (per istanza) e sessione
  • src/LocationHelper.php — risoluzione location radice
  • src/Server.php — CRUD server, tab missing clients, form

Asset Tab Interni

  • 3 sub-tab: Stato, Azioni (solo UPDATE/CREATE), Info/Log
  • CSS: tab con tonalità di grigio differenti (scuro/medio/chiaro)
  • Caricamento dati API con caching sessione 30s
  • Dati caricati: status, settings, authkey, backup recenti (10), log (50)

Cache

  • UrbackupApiClient: cache in-memory per getStatus() e getClientSettings()
  • AssetTab::loadApiData(): cache sessione 30s (chiave: server_id + client_name)
  • API timeout: 30s, connect timeout: 5s

Versione

  • 0.6.0