Files
j.foucher 68cea1eb4d V2 : optimisation API (cache, index, vue materialisee)
- BDD (migrations 1.6.0 + 1.7.0, idempotentes) :
  * 4 nouveaux index composites sur reactevents, triggerevents, sessions
  * vue sessiondebriefs reecrite (sous-requetes correlees -> JOINs)
    puis materialisee dans table session_debriefs_cache via procedure
    stockee rebuild_debrief_cache, recalculee uniquement aux changements
  * fix bug double JOIN participates : TargetRole = "IA" pour les hits
    NPC/objets (au lieu d'un role aleatoire de participant)
- API PHP :
  * connexion PDO en singleton + ATTR_PERSISTENT
  * cache disque par session (cache/sess_<id>/) pour debrief, get, userhistory
    avec invalidation ciblee sur events et lifecycle
  * pagination opt-in (limit/offset) sur lists/sessions_for_user
  * helpers ensure_/rebuild_/invalidate_session_debrief_cache_db
  * debug/benchmark.php pour mesurer la latence des 6 endpoints cles
- Endpoints HTTP : signatures inchangees, compat Unreal preservee
- Gain mesure : -58% a -83% sur les 5 endpoints cles

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 16:41:52 +02:00

41 lines
1.0 KiB
PHP

<?php
// include database and object files
include_once '../config/init.php'; // contains $db
include_once '../config/error.php';
include_once '../objects/stats_object.php';
$userId = -1;
$sessionId = -1;
$quickMode = 0;
if (isset($_POST['userId']))
$userId = $_POST['userId'];
else trigger_error( missing_parameter_error("userId") );
if (isset($_POST['sessionId']))
$sessionId = $_POST['sessionId'];
else trigger_error( missing_parameter_error("sessionId") );
if (isset($_POST['quickMode']))
$quickMode = strtolower($_POST['quickMode']) == "true" ? 1 : 0;
//if ($userId > 0 && $sessionId > 0)
{
$cacheKey = "userhistory_" . intval($userId) . "_" . intval($quickMode);
$cached = cache_get($sessionId, $cacheKey);
if ($cached !== null)
{
print_r($cached);
}
else
{
$stats = new StatsObject($db);
$stats->getUserHistory($userId, $sessionId, $quickMode);
$stats_arr = $stats->getResultArray(true, "Results_Collected_OK");
$json = json_encode($stats_arr);
cache_put($sessionId, $cacheKey, $json);
print_r($json); // OK
}
}
?>