Files
SGF/scripts/ledger-reports-observer.php
2026-11-04 09:37:20 +02:00

9 lines
1.1 KiB
PHP

<?php
// Private instrumentation only. No new application route or operational logging.
$reportProbe=$_SERVER['HTTP_X_LEDGER_REPORT_PROOF']??null;
if(in_array($reportProbe,['25','100'],true)){
$reportSql=[];$reportMode=null;$reportOutput=$s['root'].'/ledger-reports-http-'.$reportProbe.'.json';if(file_exists($reportOutput))throw new LogicException('Completed report observation preserved');
Illuminate\Support\Facades\DB::listen(function($e)use(&$reportSql,&$reportMode){$reportSql[]=$e->sql;if($reportMode===null&&str_contains($e->sql,'"gl_lines"')){$pdo=$e->connection->getPdo();$reportMode=['isolation'=>$pdo->query('SHOW transaction_isolation')->fetchColumn(),'read_only'=>$pdo->query('SHOW transaction_read_only')->fetchColumn()];}});
register_shutdown_function(function()use(&$reportSql,&$reportMode,$reportOutput){file_put_contents($reportOutput,json_encode(['transaction'=>$reportMode,'report_queries'=>count(array_filter($reportSql,fn($q)=>str_contains($q,'"gl_lines"')||str_contains($q,'"gl_journals"'))),'writer_locks'=>count(array_filter($reportSql,fn($q)=>str_contains(strtolower($q),'for update')))],JSON_PRETTY_PRINT|JSON_THROW_ON_ERROR));});
}