Странное поведение класса smsc

Ошибки, проблемы, способы их решения.
sasha181
Сообщения: 133
Зарегистрирован: 2012-02-27 15:58:24

Странное поведение класса smsc

Сообщение sasha181 » 2020-06-25 18:29:57

Заметил вот что, если использовать smsc.ru для отправки sms , то когда там кончается баланс или smsc возвращает любую другую ошибку при отправке, робот биллинга падает в "PHP Fatal error: Uncaught jException: ...."
На скриншоте кусок кода, который как раз за это отвечает
http://joxi.ru/DrlE9qMhVwYqkm?d=1
Ну и далее, как следствие, эта задача (отправка смс) становится камнем преткновения для всей системы. Всякий раз при запуске check.cron.run.sh первой задачей в очереди оказывается отправка смс и скрипт падает в fatal error.
У себя временно решил заменой обработчиков ошибок на просто return false; , чтобы хоть биллинг дальше работал.
А как это правильно исправить? Т.е. как вызвать логирование ошибки системой без fatal error ?

Аватара пользователя
Alex Keda
Сообщения: 2804
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 18 раз

Странное поведение класса smsc

Сообщение Alex Keda » 2020-06-25 20:30:44

ну, по хорошему наверное надо либу обновить да переписать

а насчёт вернуть false - ну нормальный вариант - оно на час перенесётся

скорей всего когда я её переписывал - с ошибками не сталкивался просто
Убей их всех! Бог потом рассортирует...

sasha181
Сообщения: 133
Зарегистрирован: 2012-02-27 15:58:24

Странное поведение класса smsc

Сообщение sasha181 » 2020-06-29 15:37:30

Да, заметил, что стали часто сыпаться уведомления о неудачных отправках смс на один и тот же номер.

Поясню немного откуда вообще вытекла проблема. Денег с юзеров я не беру за смс, но шлю их только по РФ. В smsc стоит запрет отправки смс на
другие префиксы номеров. Отсюда и ошибка, которую возвращает smsc - запрещённый префикс у номера.

В итоге получим постепенно забивающуюся очередь на отправку смс, если постоянно будет возвращаться false.

Наверно, стоит разделить ошибки на 3 типа:
1. Нулевой баланс - пишем в логи (чтоб админ заметил), возвращаем false чтобы смс отправилась после пополнения баланса
2. Отправка запрещена настройками в кабинете smsc - в лог не пишем, а вернуть нужно либо true , либо как-то более правильно отменить задание отправки этого смс в биллинге
3. все остальные ошибки - пишем в лог, в идеале запланировать повтор хотя бы через сутки, а не через час

Может зададите мне направления, а я допишу класс и могу прислать pull request на гитхаб. ))

Мне нужно вот что:
1. Есть ли какой-то метод в joonte, который позволит записать событие в jbs-errors.log , но при этом не упасть в fatal-error самому скрипту?
2. Как правильно отменить задание, а также передвинуть его на сутки? Понятно, что можно прямым редактированием базы, но ведь скорее всего есть готовый метод где-то?

Аватара пользователя
Alex Keda
Сообщения: 2804
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 18 раз

Странное поведение класса smsc

Сообщение Alex Keda » 2020-06-29 17:25:56

Код: Выделить всё

+343 ./hosts/billing/comp/Tasks/SMS.comp.php

дописать вариант который нужен - exception, error и т.п.

по заданиям - там всё просто - если само задание возвращает true - оно выполнено, если число - это перенос времени выполенения
собственно, вы задание то посомтрите - там всё явно и расписано

насчёт не через час а сутки - как раз плюс SMS в том что приходит сразу, а не когда до компа доберёшься
так что с сутками - несогласен...
Убей их всех! Бог потом рассортирует...


Вернуться в «Решение проблем»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя