PHP Conference Japan 2024

snmp2_walk

(PHP >= 5.2.0, PHP 7, PHP 8)

snmp2_walk从代理获取所有 SNMP 对象

描述

snmp2_walk(
    字符串 $hostname,
    字符串 $community,
    数组|字符串 $object_id,
    整数 $timeout = -1,
    整数 $retries = -1
): 数组|false

snmp2_walk() 函数用于读取由 hostname 指定的 SNMP 代理中的所有值。

参数

主机名

SNMP 代理(服务器)。

社区

读取社区。

对象ID

如果为 null,则 object_id 被视为 SNMP 对象树的根,并且该树下的所有对象都作为数组返回。

如果指定了 object_id,则返回该 object_id 下的所有 SNMP 对象。

超时

第一次超时之前的微秒数。

重试

如果发生超时,重试的次数。

返回值

返回一个 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 对象。可以使用循环遍历这些值。

参见

  • snmp2_real_walk() - 返回所有对象,包括其在指定对象内的相应对象 ID

添加注释

用户贡献的注释 2 条注释

2
Adam
12 年前
经过一些测试,我发现 SNMPWalk 比多个 SNMPGet 慢得多。

我旨在从 MIB 中检索 6 个对象;被轮询的设备通过 100mbps 网络链路连接。
我决定在循环中运行 SNMPGet 以从指定的 OID 中检索每个对象。
由于这些 OID 在同一棵树中,然后我考虑使用 walk,因为这会将数据合并到单个请求中。然后我遍历了树以获得相同的结果。

随后,我测试了使用 microtime() 检索这些信息所需的时间。
结果,您可以在请求 18 个 OID 通过 get 的相同时间内检索包含 6 个 OID 的 1 个 walk。

我希望这对正在寻求加快 SNMP 请求速度的人有所帮助。
0
Ypera123 at gmail dot com
7 年前
老实说,这并不那么重要,但在示例 #1 中有一个拼写错误:“Snm2_pwalk”。
最好修复它,以免造成混淆。
To Top