1. <?php
  2. /**
  3. * Tracks request headers for debugging with limited memory.
  4. *
  5. * This function stores request headers in a simple array structure
  6. * and outputs them in a human-readable format. It's designed for
  7. * debugging purposes and avoids storing large amounts of data in memory.
  8. * Suitable for situations where a full log is not needed, but header
  9. * information is valuable.
  10. *
  11. * @param array $headers The array of HTTP headers.
  12. */
  13. function trackRequestHeaders(array $headers): void
  14. {
  15. // Use a simple array to store the headers.
  16. static $trackedHeaders = [];
  17. // Add the current headers to the tracked headers.
  18. $trackedHeaders = array_merge($trackedHeaders, $headers);
  19. // Output the tracked headers in a human-readable format.
  20. echo "--- Request Headers ---\n";
  21. foreach ($trackedHeaders as $headerName => $headerValue) {
  22. echo "$headerName: $headerValue\n";
  23. }
  24. echo "-----------------------\n";
  25. // Limit the number of tracked headers to prevent excessive memory usage.
  26. if (count($trackedHeaders) > 20) {
  27. $trackedHeaders = array_slice($trackedHeaders, 0, 20);
  28. }
  29. }
  30. /**
  31. * Example usage (for testing). Remove in production.
  32. */
  33. if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'GET') {
  34. $headers = getallheaders(); // Get all request headers.
  35. trackRequestHeaders($headers);
  36. }
  37. ?>

Add your comment