无论如何我可以使用php获取服务器每月带宽使用量吗? 谢谢。
答案 0 :(得分:1)
最好的办法是解析通过ethX接口的数据包数量 跟踪传递的字节数的命令是/ sbin / ifconfig 请记住,如果重新启动Linux机箱,计数器将被重置
eth0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:32363649 errors:0 dropped:0 overruns:0 frame:0
TX packets:35133219 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2813232645 (2.6 GiB) TX bytes:1696525681 (1.5 GiB)
Interrupt:16 Memory:f4000000-f4012700
答案 1 :(得分:1)
您可以解析站点的apache访问日志以计算总带宽。这是一个松散的伪php示例(实际实现将取决于您的日志格式):
<?php
$logfile = '/var/log/apache/httpd-access.log';
$startDate = '2010-10-01';
$endDate = '2010-10-31';
$fh = fopen($logfile, 'r');
if (!$fh) die('Couldn\'t open log file.');
$totalBytes = 0;
// let's pretend the log is a csv file because i'm lazy at parsing
while (($info = fgetcsv($fh, 0, ' ', '"')) !== false) {
// get the date of the log entry
$date = $info[3];
// check if the date is within our month of interest
if ($date > $startDate && $date < $endDate) {
// get the number of bytes sent in the request
$totalBytes += $info[7];
}
}
fclose($fh);
echo 'Total bytes used: ' . $totalBytes;
此外,根据日志的大小,此脚本可能会非常慢,因此您应该考虑将结果缓存以供以后使用,而不是重复运行。