Add resource metrics to WebDAV derivative test

This commit is contained in:
Terranom674
2026-08-20 14:40:13 +02:00
parent 210c180e49
commit 29063b296a

View File

@@ -274,6 +274,14 @@ if (!isset($user['status']) || !in_array($user['status'], array('admin', 'webmas
bratonien_tools_webdav_derivative_test_abort(403, 'Dieser Test-Endpunkt ist nur fuer Administratoren verfuegbar.'); bratonien_tools_webdav_derivative_test_abort(403, 'Dieser Test-Endpunkt ist nur fuer Administratoren verfuegbar.');
} }
$metrics_requested = isset($_GET['metrics']) && (string)$_GET['metrics'] === '1';
$metrics_started_at = microtime(true);
$memory_start = memory_get_usage(true);
if (function_exists('memory_reset_peak_usage'))
{
memory_reset_peak_usage();
}
$image_id = (int)($_GET['id'] ?? 0); $image_id = (int)($_GET['id'] ?? 0);
if ($image_id < 1) if ($image_id < 1)
{ {
@@ -368,6 +376,8 @@ try
bratonien_tools_webdav_derivative_test_abort(502, $detail); bratonien_tools_webdav_derivative_test_abort(502, $detail);
} }
$source_bytes = (int)filesize($source_path);
$dimensions = @getimagesize($source_path); $dimensions = @getimagesize($source_path);
if (!is_array($dimensions) || empty($dimensions[0]) || empty($dimensions[1])) if (!is_array($dimensions) || empty($dimensions[0]) || empty($dimensions[1]))
{ {
@@ -441,10 +451,36 @@ try
$generated_width = (int)$derivative_size[0]; $generated_width = (int)$derivative_size[0];
$generated_height = (int)$derivative_size[1]; $generated_height = (int)$derivative_size[1];
$derivative_bytes = (int)filesize($derivative_path);
$cleanup(); $cleanup();
$elapsed_ms = round((microtime(true) - $metrics_started_at) * 1000, 2);
$memory_peak = memory_get_peak_usage(true);
$memory_delta_peak = max(0, $memory_peak - $memory_start);
if ($metrics_requested)
{
header('Content-Type: application/json; charset=utf-8');
header('Cache-Control: no-store');
echo json_encode(array(
'source_bytes'=>$source_bytes,
'derivative_bytes'=>$derivative_bytes,
'elapsed_ms'=>$elapsed_ms,
'memory_start_bytes'=>$memory_start,
'memory_peak_bytes'=>$memory_peak,
'memory_delta_peak_bytes'=>$memory_delta_peak,
), JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
exit;
}
header('X-Bratonien-WebDAV-Test: parallel-i.php-success'); header('X-Bratonien-WebDAV-Test: parallel-i.php-success');
header('X-Bratonien-Resource-Source-Bytes: '.$source_bytes);
header('X-Bratonien-Resource-Derivative-Bytes: '.$derivative_bytes);
header('X-Bratonien-Resource-Elapsed-Ms: '.$elapsed_ms);
header('X-Bratonien-Resource-Memory-Start-Bytes: '.$memory_start);
header('X-Bratonien-Resource-Memory-Peak-Bytes: '.$memory_peak);
header('X-Bratonien-Resource-Memory-Delta-Peak-Bytes: '.$memory_delta_peak);
header('X-Bratonien-WebDAV-Test-Size: '.$generated_width.'x'.$generated_height); header('X-Bratonien-WebDAV-Test-Size: '.$generated_width.'x'.$generated_height);
header('Content-Type: '.$content_type); header('Content-Type: '.$content_type);
header('Content-Length: '.strlen($body)); header('Content-Length: '.strlen($body));