Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Access Log Parser
- */
- $handle = fopen( 'access.log', 'r' );
- function display_column_report( $values, $total ) {
- foreach ( $values as $key => $quantity ) {
- $percent = round( 100 * $quantity / $total );
- echo "- $quantity ($percent%): $key\n";
- }
- echo "\n";
- }
- function increment_key_in_array( $array, $key ) {
- if ( ! isset( $array[ $key ] ) ) {
- $array[ $key ] = 0;
- }
- $array[ $key ]++;
- return $array;
- }
- $line_quantity = 0;
- $codes = $files = $referrers = $user_agents = [];
- while ( $line = fgetcsv( $handle, 0, ' ' ) ) {
- $line_quantity++;
- $codes = increment_key_in_array( $codes, $line[6] );
- $file = preg_replace( '#^(?:POST|GET)\s([^\s]+).*#', '$1', $line[5] );
- $files = increment_key_in_array( $files, $file );
- $referrer = in_array( $line[8], [ ' ', '-' ] ) ? 'Unknown' : $line[8];
- $referrers = increment_key_in_array( $referrers, $referrer );
- $user_agent = in_array( $line[9], [ ' ', '-' ] ) ? 'Unknown' : $line[9];
- $user_agents = increment_key_in_array( $user_agents, $user_agent );
- }
- echo "####### LOG REPORT #######\n\n";
- echo "Line quantity: $line_quantity\n\n";
- echo "HTTP Codes:\n";
- display_column_report( $codes, $line_quantity );
- echo "Files:\n";
- arsort( $files );
- display_column_report( $files, $line_quantity );
- echo "Referrers:\n";
- arsort( $referrers );
- display_column_report( $referrers, $line_quantity );
- echo "User Agents:\n";
- arsort( $user_agents );
- display_column_report( $user_agents, $line_quantity );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement