@Zrivoknovsky

Как добавить исключение в php скрипт?

Здравствуйте. Никак не могу разобраться, нужна помощь.
Имеется php скрипт который из sql таблицы берет информацию о принтерах и опрашивает их по snmp. Нужно добавить исключения, чтобы часть кода с проверками и расчетами не выполнялась, если принтер не доступен(выключен на пример).
Как я понимаю, для этого нужно использовать try catch, пересмотрел уже кучу статей и форумов, но никак не могу это реализовать.
Сам скрипт
<?php
include("db-config.php");// Файл конфигупации подключения к БД

//Запрос данных из таблицы принтеров
$Printer = mysqli_query($link, "SELECT p_id,p_ip,p_snmp,p_counter,p_cartridge_id  FROM Printer WHERE p_status=1");

while($ms_res1 = mysqli_fetch_assoc($Printer))
{
  $p_id = $ms_res1['p_id'];//Идентификатор
  $p_ip = $ms_res1['p_ip'];//ip адрес
  $p_snmp = $ms_res1['p_snmp'];//snmp код
  $p_counter = $ms_res1['p_counter'];//Счетчик напечатаных страниц из БД
  $p_cartridge_id = $ms_res1['p_cartridge_id'];//Идентификатор картриджа
  $community='public';//
  snmp_set_quick_print (1);//1-Только значение, 0-Полное отображение
*****На этом этапе хочу проверить есть ли связь с принтером 
*****и остальную часть выполнять только если он доступен
  $printer_snmp_counter=(int)snmpget($p_ip,$community,$p_snmp);//snmp запрос текущего кол-ва напечатаных страниц

//Запрос данных из таблицы картриджей
  $Cartridge = mysqli_query($link, "SELECT c_alarm,c_counter FROM Cartridge WHERE c_id=$p_cartridge_id");

    $ms_res2 = mysqli_fetch_assoc($Cartridge);
    $c_alarm = $ms_res2["c_alarm"];//Остаток ресурса до уведомления
    $c_counter = $ms_res2["c_counter"];//Ресурс картриджа

  $limit = $c_counter - $c_alarm;//Расчет лимита печати
  $tm = ($printer_snmp_counter - $p_counter);//Расчет количеста напечатаных страниц
  echo "Test"."\n";

  if($tm > $limit):
#    send alarm
    $sql = "UPDATE Printer SET p_snmp_counter=$printer_snmp_counter WHERE p_id=$p_id";//Запись в БД
    mysqli_query($link, $sql);
  else:
    $sql = "UPDATE Printer SET p_snmp_counter=$printer_snmp_counter WHERE p_id=$p_id";//Запись в БД
    mysqli_query($link, $sql);
  endif;
}
?>

Я новичок, это моя первая работа с php.
Подскажите как правитьно внедрить исключение?
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 2
@rPman
Сразу после вызова snmpget проверь $printer_snmp_counter на false, если да то пропусти дальнейшие шаги и выводи ошибку или что тебе там надо делать
Ответ написан
glaphire
@glaphire Куратор тега PHP
PHP developer
Ловить исключение нужно там, где функция может его выбросить, в Вашем случае я не вижу функций, которые это могут делать (потому что код в процедурном стиле с простыми функциями, а не ООП). Достаточно проверки на некорректные значения, как написал rPman.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
18 июн. 2021, в 14:04
500 руб./за проект
18 июн. 2021, в 14:03
15000 руб./за проект
18 июн. 2021, в 14:01
1000 руб./за проект