diff options
author | Seth Mos <seth.mos@xs4all.nl> | 2007-10-17 20:10:21 +0000 |
---|---|---|
committer | Seth Mos <seth.mos@xs4all.nl> | 2007-10-17 20:10:21 +0000 |
commit | 468b0d65e76d31b6faa9f1d46c2f5e655d91d7a6 (patch) | |
tree | f5953fe09124f317d2cb61c258cdfd6dab0b2f3d | |
parent | fc2593349872a5c3a1cebae6bd8eaf67edc88687 (diff) | |
download | pfsense-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
-rwxr-xr-x | usr/local/www/diag_dhcp_leases.php | 24 |
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; |