<?php
/**
* Removes duplicate HTTP responses for monitoring purposes.
*
* Uses a configuration file to define the log file path and other settings.
*/
// Configuration file path
$config_file = 'config.ini';
// Default configuration values
$config = [
'log_file' => 'response_log.txt',
'max_responses' => 1000, //Limit number of responses to process.
];
// Load configuration from file
if (file_exists($config_file)) {
$config = parse_ini_file($config_file);
}
/**
* Removes duplicate HTTP responses from a log file.
*
* @param string $log_file The path to the log file.
* @param int $max_responses The maximum number of responses to process.
*/
function removeDuplicateResponses(string $log_file, int $max_responses): void
{
$response_set = []; // Use a set to store unique responses
$file = fopen($log_file, 'r');
if (!$file) {
error_log("Error opening log file: $log_file");
return;
}
$response_count = 0;
while (($line = fgets($file)) !== false) {
$response = trim($line);
// Skip empty lines
if (empty($response)) {
continue;
}
if (!in_array($response, $response_set)) {
$response_set[] = $response;
$response_count++;
if ($response_count >= $max_responses) {
break; // Stop processing if limit reached
}
}
}
fclose($file);
// Write the unique responses back to the log file
$file = fopen($log_file, 'w');
if (!$file) {
error_log("Error opening log file for writing: $log_file");
return;
}
foreach ($response_set as $response) {
fputcsv($file, [$response]); // Write each response as a CSV row
}
fclose($file);
error_log("Duplicate responses removed from $log_file. Processed $response_count responses.");
}
// Example usage
removeDuplicateResponses($config['log_file'], $config['max_responses']);
?>
Add your comment