summaryrefslogtreecommitdiffstats
path: root/usr
diff options
context:
space:
mode:
authorSeth Mos <seth.mos@xs4all.nl>2007-10-17 20:10:21 +0000
committerSeth Mos <seth.mos@xs4all.nl>2007-10-17 20:10:21 +0000
commit468b0d65e76d31b6faa9f1d46c2f5e655d91d7a6 (patch)
treef5953fe09124f317d2cb61c258cdfd6dab0b2f3d /usr
parentfc2593349872a5c3a1cebae6bd8eaf67edc88687 (diff)
downloadpfsense-468b0d65e76d31b6faa9f1d46c2f5e655d91d7a6.zip
pfsense-468b0d65e76d31b6faa9f1d46c2f5e655d91d7a6.tar.gz
Optimize last 10 seconds of load times on the dhcp leases page.
Only populate arp array once, then check if it exists
Diffstat (limited to 'usr')
-rwxr-xr-xusr/local/www/diag_dhcp_leases.php24
1 files changed, 17 insertions, 7 deletions
diff --git a/usr/local/www/diag_dhcp_leases.php b/usr/local/www/diag_dhcp_leases.php
index 6998da2..ffbc6b7 100755
--- a/usr/local/www/diag_dhcp_leases.php
+++ b/usr/local/www/diag_dhcp_leases.php
@@ -74,6 +74,19 @@ $splitpattern = "'BEGIN { RS=\"}\";} {for (i=1; i<=NF; i++) printf \"%s \", \$i;
exec("cat {$leasesfile} | {$awk} {$cleanpattern} | {$awk} {$splitpattern}", $leases_content);
$leases_count = count($leases_content);
+exec("/usr/sbin/arp -an", $rawdata);
+$arpdata = array();
+foreach ($rawdata as $line) {
+ $elements = explode(' ',$line);
+ if ($elements[3] != "(incomplete)") {
+ $arpent = array();
+ $arpent['ip'] = trim(str_replace(array('(',')'),'',$elements[1]));
+ // $arpent['mac'] = trim($elements[3]);
+ // $arpent['interface'] = trim($elements[5]);
+ $arpdata[] = $arpent['ip'];
+ }
+}
+
$pools = array();
$leases = array();
$i = 0;
@@ -155,13 +168,10 @@ while($i < $leases_count) {
case "hardware":
$leases[$l]['mac'] = $data[$f+2];
/* check if it's online and the lease is active */
- if($leases[$l]['act'] == "active") {
- $online = exec("/usr/sbin/arp -an |/usr/bin/awk '/{$leases[$l]['ip']}/ {print}'|wc -l");
- if ($online == 1) {
- $leases[$l]['online'] = 'online';
- } else {
- $leases[$l]['online'] = 'offline';
- }
+ if (in_array($leases[$l]['ip'], $arpdata)) {
+ $leases[$l]['online'] = 'online';
+ } else {
+ $leases[$l]['online'] = 'offline';
}
$f = $f+2;
break;
OpenPOWER on IntegriCloud