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 — Получает все объекты SNMP из агента
$hostname
,$community
,$object_id
,$timeout
= -1,$retries
= -1
Функция snmp2_walk() используется для чтения всех значений из агента SNMP,
указанного в hostname
.
hostname
Агент SNMP (сервер).
community
Read-сообщество.
object_id
Если null
, object_id
берётся в качестве корня дерева объектов SNMP
и все объекты этого дерева возвращаются в виде массива.
Если указан object_id
, возвращаются все объекты SNMP
ниже этого object_id
.
timeout
Время ожидания в микросекундах.
retries
Количество повторных попыток при истечении времени ожидания.
Возвращает массив значений объекта SNMP,
начиная с object_id
в качестве корня или false
в случае возникновения ошибки.
Пример #1 Пример использования snmp2_walk()
<?php
$a = snmp2_walk("127.0.0.1", "public", "");
foreach ($a as $val) {
echo "$val\n";
}
?>
Вызов функции вернёт все объекты SNMP из агента SNMP, работающего на localhost. Можно перемещаться по значениям с помощью цикла.
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.