我使用snmp2_real_walk
函數。php警告重定向
$tmp = snmp2_real_walk($ip, '***'.$vlan, $title, 100000,10);
當oid是正確的,設備正在工作,我得到所需的輸出。但我想處理警告:Invalid object identifier...
或No response from 192.168.19.249...
或其他。我的問題是:我怎麼能將這些警告重定向到我的變量?
還是有一些其他功能顯示這些警告?
謝謝!
我使用snmp2_real_walk
函數。php警告重定向
$tmp = snmp2_real_walk($ip, '***'.$vlan, $title, 100000,10);
當oid是正確的,設備正在工作,我得到所需的輸出。但我想處理警告:Invalid object identifier...
或No response from 192.168.19.249...
或其他。我的問題是:我怎麼能將這些警告重定向到我的變量?
還是有一些其他功能顯示這些警告?
謝謝!
你也可以看看set_error_handler設定自己的錯誤處理這個具體情況,然後使函數調用後恢復的錯誤處理程序。
使用error_get_last()
是解決:)
你想使用try-catch塊來這裏趕上你的例外是從PHP文檔的調整。例如你的功能:
<?php
try
{
$tmp = snmp2_real_walk($ip, '***'.$vlan, $title, 100000,10);
}
catch (Exception $e)
{
echo 'Caught exception: ', $e->getMessage(), "\n";
}
echo $tmp;
?>
這也適用,但我必須在這裏做雙重工作:一旦我遇到異常,我必須解析它 – k102
看看PHP的set_error_handler函數。 snmp2_real_walk在遇到錯誤時會生成E_WARNING消息,set_error_handler將允許您捕獲並記錄它們。
我懷疑這會起作用,因爲set_error_handler只是響應E_USER類型的錯誤。可以使用register_shutdown_function和error_get_last來完成。 – Raffael
@ Raffael1984:實際上,'set_error_handler()'處理* most *錯誤類型,而不僅僅是'E_USER_ *'。值得注意的例外是邏輯上不可能的例外(例如解析或編譯錯誤)和(不幸的是)致命錯誤。 – pinkgothic
我懷疑這會起作用,因爲set_error_handler只是響應E_USER類型的錯誤。可以使用register_shutdown_function和error_get_last來完成。 – Raffael
但這個工程!它與'error_get_last'大致相同,但對我來說似乎更加正確 – k102
@ Raffael1984:'set_error_handler'響應'E_WARNING'錯誤,這是'snmp2_real_walk'觸發的錯誤。 – cmbuckley