RobertP Posted January 6, 2013 Share Posted January 6, 2013 Let me know what you think... <?php $hitDebug = false; $startMemory = memory_get_usage(); $startTime = microtime(true); print '<pre>' . PHP_EOL; $totalFiles = $bandwidth = $hits = 0; $uniqueHits = array(); $uniqueHits24h = array(); foreach (glob('/var/log/apache2/access.*') as $logFile) { if (stristr($logFile, '.gz'))//I manually extracted them.. continue; /* Array ( [0] => 127.0.0.1 [1] => - [2] => - [3] => [12/Dec/2012:00:57:29 [4] => -0500] [5] => GET /test.php HTTP/1.1 [6] => 200 [7] => 313 [8] => - [9] => Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11 ) */ $handle = fopen($logFile, 'r'); if ($handle) { $lineStartMemory = memory_get_usage(); if ($hitDebug) print "Hit #\t\tMemory\t\tMicrosecond" . PHP_EOL; while (($line = stream_get_line($handle, 1024, PHP_EOL)) !== false) { $lineStartTime = microtime(true); $results = str_getcsv($line, " ", '"', '\\'); $bandwidth += $results[7]; if (!isset($uniqueHits[$results[0]])) { $uniqueHits[$results[0]] = null; list($d, $M, $y, $h, $m, $s, $z) = sscanf($results[3] . ' ' . $results[4], '[%2d/%3s/%4d:%2d:%2d:%2d %5s]'); $time = strtotime($d . ' ' . $M . ' ' . $y . ' ' . $h . ':' . $m . ':' . $s . ' ' . $z); if ((microtime(true) - $time) < 86400) $uniqueHits24h[$results[0]] = null; } $hits++; if ($hits % 100 == 0 && $hitDebug) print 'Hit #' . $hits . "\t" . number_format(memory_get_usage() - $lineStartMemory) . "\t\t" . substr(((microtime(true) - $lineStartTime) * 1000000), 1) . PHP_EOL; } if ($hitDebug) print "\n"; if (!feof($handle)) print 'Error: unexpected fgets() fail' . PHP_EOL; fclose($handle); } print 'Log File: ' . $logFile . ' (' . number_format(filesize($logFile) / 1024, 2) . ' KB)' . PHP_EOL; $totalFiles++; } $parserTime = number_format(microtime(true) - $startTime, 4); print PHP_EOL; print 'Total Files: ' . number_format($totalFiles) . PHP_EOL; print 'Total Hits: ' . number_format($hits) . PHP_EOL; print 'Total Unique Hits: ' . number_format(count($uniqueHits)) . ' (' . number_format(count($uniqueHits24h)) . ' within the last 24 hours)' . PHP_EOL; print 'Total Bandwidth: ' . number_format($bandwidth / 1024 / 1024, 2) . ' MB (' . number_format($bandwidth) . ' B)' . PHP_EOL; print PHP_EOL; print '[PARSER]' . PHP_EOL; print 'Total Time: ' . $parserTime . PHP_EOL; print 'Total Memory: ' . (memory_get_usage() - $startMemory) . ' B' . PHP_EOL; print 'Memory Peak: ' . memory_get_peak_usage() . ' B' . PHP_EOL; print '</pre>'; ?> demo: http://auth.gludoe.com/bandwidth.php Link to comment https://forums.phpfreaks.com/topic/272769-calculating-bandwidth-with-php/ Share on other sites More sharing options...
Christian F. Posted January 6, 2013 Share Posted January 6, 2013 It's missing comments... Link to comment https://forums.phpfreaks.com/topic/272769-calculating-bandwidth-with-php/#findComment-1403766 Share on other sites More sharing options...
cpd Posted January 7, 2013 Share Posted January 7, 2013 Cache the result maybe? Link to comment https://forums.phpfreaks.com/topic/272769-calculating-bandwidth-with-php/#findComment-1403914 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.