<?php
/**
* Diagnostics script to surface HTTP header errors with a timeout.
*
* @param int $timeout Timeout in seconds.
* @return void
*/
function diagnoseHeaders(int $timeout = 5): void
{
$startTime = time();
$errors = [];
$headers = get_headers();
if ($headers === false) {
$errors[] = "Failed to retrieve headers.";
} else {
foreach ($headers as $header) {
if (strpos($header, ': ') !== false) { // Check if it's a header line
list($name, $value) = explode(': ', $header, 2); // Split into name and value
// Basic error checks - expand as needed
if (empty($name)) {
$errors[] = "Invalid header name: " . $name;
} elseif (empty($value)) {
$errors[] = "Empty header value: " . $name;
}
}
}
}
$endTime = time();
$duration = $endTime - $startTime;
if ($duration > $timeout) {
$errors[] = "Timeout exceeded: " . $duration . " seconds.";
}
if (!empty($errors)) {
echo "Header Diagnostics:\n";
foreach ($errors as $error) {
echo "- " . $error . "\n";
}
} else {
echo "No header errors found.\n";
}
}
//Example usage:
diagnoseHeaders(10); //Run with a 10 second timeout
?>
Add your comment