mysqli->real_escape_string($v); } public function sql_query(string $sql): mysqli_result|bool { return $this->mysqli->query($sql); } public function sql_affected_rows(): int { return $this->mysqli->affected_rows; } } $mysqli = new mysqli('localhost', 'root', '', 'pmc_release_bench_20260928', 3306, '/run/mysqld/mysqld.sock'); $mysqli->set_charset('utf8mb4'); $gate = new App\Plugin\Alerting\MetadataLockEvaluationGate(new GateDb($mysqli)); $summarize = static function (array $samples): array { sort($samples, SORT_NUMERIC); $n = count($samples); return ['mean_ms'=>array_sum($samples)/$n, 'median_ms'=>($samples[intdiv($n-1,2)]+$samples[intdiv($n,2)])/2, 'p95_ms'=>$samples[(int)floor(($n-1)*.95)], 'max_ms'=>$samples[$n-1]]; }; $results=[]; $base=strtotime('2026-08-20 21:02:52'); foreach (['claim_skipped'=>2000,'claim_due'=>1000] as $case=>$iterations) { $results[$case]=['iterations_per_trial'=>$iterations,'trials'=>[]]; for ($trial=0;$trial<5;$trial++) { $mysqli->query('DELETE FROM alerting_metadata_lock_schedule WHERE id_mysql_server=327'); if ($case==='claim_skipped' && !$gate->claim(327,date('Y-m-d H:i:s',$base),30)) { throw new RuntimeException('Could not prime schedule'); } $samples=[]; for ($i=0;$i<$iterations;$i++) { $date=date('Y-m-d H:i:s',$base+($case==='claim_due'?$i*30:0)); $start=hrtime(true); $claimed=$gate->claim(327,$date,30); $samples[]=(hrtime(true)-$start)/1e6; if ($claimed!==($case==='claim_due')) { throw new RuntimeException("$case correctness failure"); } } $results[$case]['trials'][]=$summarize($samples); } } echo json_encode(['revision'=>$argv[3]??null,'php'=>PHP_VERSION,'mariadb'=>$mysqli->server_info, 'database'=>'pmc_release_bench_20260928','cases'=>$results],JSON_PRETTY_PRINT|JSON_THROW_ON_ERROR),"\n";