1. <?php
  2. /**
  3. * Removes duplicate HTTP responses for monitoring purposes.
  4. *
  5. * Uses a configuration file to define the log file path and other settings.
  6. */
  7. // Configuration file path
  8. $config_file = 'config.ini';
  9. // Default configuration values
  10. $config = [
  11. 'log_file' => 'response_log.txt',
  12. 'max_responses' => 1000, //Limit number of responses to process.
  13. ];
  14. // Load configuration from file
  15. if (file_exists($config_file)) {
  16. $config = parse_ini_file($config_file);
  17. }
  18. /**
  19. * Removes duplicate HTTP responses from a log file.
  20. *
  21. * @param string $log_file The path to the log file.
  22. * @param int $max_responses The maximum number of responses to process.
  23. */
  24. function removeDuplicateResponses(string $log_file, int $max_responses): void
  25. {
  26. $response_set = []; // Use a set to store unique responses
  27. $file = fopen($log_file, 'r');
  28. if (!$file) {
  29. error_log("Error opening log file: $log_file");
  30. return;
  31. }
  32. $response_count = 0;
  33. while (($line = fgets($file)) !== false) {
  34. $response = trim($line);
  35. // Skip empty lines
  36. if (empty($response)) {
  37. continue;
  38. }
  39. if (!in_array($response, $response_set)) {
  40. $response_set[] = $response;
  41. $response_count++;
  42. if ($response_count >= $max_responses) {
  43. break; // Stop processing if limit reached
  44. }
  45. }
  46. }
  47. fclose($file);
  48. // Write the unique responses back to the log file
  49. $file = fopen($log_file, 'w');
  50. if (!$file) {
  51. error_log("Error opening log file for writing: $log_file");
  52. return;
  53. }
  54. foreach ($response_set as $response) {
  55. fputcsv($file, [$response]); // Write each response as a CSV row
  56. }
  57. fclose($file);
  58. error_log("Duplicate responses removed from $log_file. Processed $response_count responses.");
  59. }
  60. // Example usage
  61. removeDuplicateResponses($config['log_file'], $config['max_responses']);
  62. ?>

Add your comment