Y at-il de toute façon je peux obtenir l'utilisation de la bande passante mensuelle des serveurs en utilisant PHP? Merci.Obtenir l'utilisation mensuelle de la bande passante du serveur UNIX avec PHP
Répondre
votre meilleur pari est d'analyser le nombre de paquets qui ont passé ethX inteface commande qui garde la trace des octets transmis est/sbin/ifconfig Gardez à l'esprit que les compteurs sont remis à zéro si vous redémarrez votre boîte 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
Vous pouvez analyser le journal d'accès apache de votre site pour déterminer la bande passante totale. Voici un exemple de pseudo-php lâche (la mise en œuvre réelle dépendra de votre format de journal):
<?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;
En outre, ce script est susceptible d'être très lent en fonction de la taille de vos journaux, vous devriez envisager la mise en cache le résultat pour une utilisation ultérieure au lieu de l'exécuter à plusieurs reprises.
J'obtiens comme 1M de visites par jour ... –
Dans ce cas, pensez à configurer AWStats ou un logiciel similaire qui est destiné à l'analyse/aux statistiques de fichiers journaux, faites-le régulièrement (via un cronjob), puis analysez AWStats 'fichiers de cache de données. –
le redémarrage serait un problème, pas efficace, aura des erreurs à coup sûr! –
si la valeur lue est inférieure à la valeur précédente, cela signifie qu'un redémarrage s'est produit, puis ajoutez-le à la dernière valeur sauvegardée + une marge d'erreur (qui correspond à la bande passante moyenne par heure * heures écoulées depuis la dernière vérification) un peu d'entraînement, mais c'est une bonne idée ... un moyen de le faire via Windows? –
sysadmin linux depuis longtemps ici, donc désolé aucune solution windows :) Je suppose que Windows enregistre également les compteurs de trafic quelque part, après tout son montré sur l'interface réseau status – damir