Honestly not that important but there's a spelling error in Example #1: "Snm2_pwalk"
Best to fix it so it doesn't confuse.
(PHP >= 5.2.0, PHP 7, PHP 8)
snmp2_walk — Fetch all the SNMP objects from an agent
$hostname
, string $community
, array|string $object_id
, int $timeout
= -1
, int $retries
= -1
) : array|false
snmp2_walk() function is used to read all the values from
an SNMP agent specified by the hostname
.
hostname
The SNMP agent (server).
community
The read community.
object_id
If null
, object_id
is taken as the root of
the SNMP objects tree and all objects under that tree are returned as
an array.
If object_id
is specified, all the SNMP objects
below that object_id
are returned.
timeout
The number of microseconds until the first timeout.
retries
The number of times to retry if timeouts occur.
Returns an array of SNMP object values starting from the
object_id
as root or false
on error.
Example #1 snmp2_walk() Example
<?php
$a = snmp2_walk("127.0.0.1", "public", "");
foreach ($a as $val) {
echo "$val\n";
}
?>
Above function call would return all the SNMP objects from the SNMP agent running on localhost. One can step through the values with a loop
Honestly not that important but there's a spelling error in Example #1: "Snm2_pwalk"
Best to fix it so it doesn't confuse.
After some testing, I have found that SNMPWalk is considerably slower than multiple SNMPGet.
I was aiming to retrieve 6 Objects from a MIB; the device being polled was attached via a 100mbps network link.
I decided to run SNMPGet within a loop to retrieve each Object from the specified OID's.
As these OID's were within the same tree, I then thought about using walk as this would consolidate the data into a single request. I then walked the tree to get the same result.
I subsequently testing the time it took to retrieve this information via microtime().
As a result, you can retrieve 1 walk containing 6 OID's within the same time as requesting 18 OIDs via get.
I hope this helps someone whom is looking to speed up their SNMP requests.