Estou desenvolvendo uma solução em PHP bem pequena e essa solução já faz o que precisa ser feito na boa... o que eu gostaria de implementar é um tratamento de errors, nesse caso seria: Sem que houver um erro, ignore e continue processando o script... Em ASP isso é feito usando o 'On Error Resume Next' e por aí vai... mas em PHP qual seria a equivalência?
Minha solução é uma consulta SNMP em um conjunto de equipamentos, e caso 1 desses equipamentos fique off-line eu acabo perdendo a visualização de toda a lista.
Um parcial do código é esse:
<?php $D2_host = '172.22.11.111'; $D2_community = 'public'; $D2_local= snmpget("$D2_host", $D2_community, ".1.3.6.1.2.1.1.6.0"); $D2_equipamento= snmpget("$D2_host", $D2_community, ".1.3.6.1.2.1.1.5.0"); $D2_contato = snmpget("$D2_host", $D2_community, ".1.3.6.1.2.1.1.4.0"); $D2_tempo_de_bateriaget= snmpget("$D2_host", $D2_community, ".1.3.6.1.4.1.318.1.1.1.2.2.3.0"); $D2_tempo_de_bateria = preg_replace('#^.*?\)\s*(\d+:\d+).*?$#s', '\\1', $D2_tempo_de_bateriaget); $D2_temperaturaget = snmpget("$D2_host", "$D2_community", ".1.3.6.1.4.1.318.1.1.2.1.1.0"); $D2_temperatura = eregi_replace("Gauge32:","",$D2_temperaturaget); $D2_umidadeget= snmpget("$D2_host", "$D2_community", ".1.3.6.1.4.1.318.1.1.2.1.2.0"); $D2_umidade= eregi_replace("Gauge32:","",$D2_umidadeget); $D4_host = '172.22.22.222'; $D4_community = 'public'; $D4_local= snmpget("$D4_host", $D4_community, ".1.3.6.1.2.1.1.6.0"); $D4_equipamento= snmpget("$D4_host", $D4_community, ".1.3.6.1.2.1.1.5.0"); $D4_contato = snmpget("$D4_host", $D4_community, ".1.3.6.1.2.1.1.4.0"); $D4_tempo_de_bateriaget= snmpget("$D4_host", $D4_community, ".1.3.6.1.4.1.318.1.1.1.2.2.3.0"); $D4_tempo_de_bateria = preg_replace('#^.*?\)\s*(\d+:\d+).*?$#s', '\\1', $D4_tempo_de_bateriaget); $D4_temperaturaget = snmpget("$D4_host", "$D4_community", ".1.3.6.1.4.1.318.1.1.2.1.1.0"); $D4_temperatura = eregi_replace("Gauge32:","",$D4_temperaturaget); $D4_umidadeget= snmpget("$D4_host", "$D4_community", ".1.3.6.1.4.1.318.1.1.2.1.2.0"); $D4_umidade= eregi_replace("Gauge32:","",$D4_umidadeget); $D5_host = '172.22.333.333'; $D5_community = 'public'; $D5_local= snmpget("$D5_host", $D5_community, ".1.3.6.1.2.1.1.6.0"); $D5_equipamento= snmpget("$D5_host", $D5_community, ".1.3.6.1.2.1.1.5.0"); $D5_contato = snmpget("$D5_host", $D5_community, ".1.3.6.1.2.1.1.4.0"); $D5_tempo_de_bateriaget= snmpget("$D5_host", $D5_community, ".1.3.6.1.4.1.318.1.1.1.2.2.3.0"); $D5_tempo_de_bateria = preg_replace('#^.*?\)\s*(\d+:\d+).*?$#s', '\\1', $D5_tempo_de_bateriaget); $D5_temperaturaget = snmpget("$D5_host", "$D5_community", ".1.3.6.1.4.1.318.1.1.2.1.1.0"); $D5_temperatura = eregi_replace("Gauge32:","",$D5_temperaturaget); $D5_umidadeget= snmpget("$D5_host", "$D5_community", ".1.3.6.1.4.1.318.1.1.2.1.2.0"); $D5_umidade= eregi_replace("Gauge32:","",$D5_umidadeget); ?>
Ou seja, se o primeiro bloco não conseguir ser executado devido ao equipamento estar off-line, todo o restante do bloco se compromete.
Alguém poderia lançar uma luz em como ignorar o erro e continuar a processar o script?
Muito obrigado.