Добрый день.
Появилась проблема: при попытке отмены заказ используя агент, он "виснет". Т.е. заказ не отменяется и агент перестает вызываться (при этом он также остается висеть в списке агентов с просроченной датой запуска).
Логика работы такая.
Пользователь создает заказ на сайте.
Автоматически создается агент на отмену этого заказа, если он не был оплачен до определенной даты.
Функция агента прописана в init.php. В нее передается 2 параметра: id товара и таймстам когда нужно совершить отмену.
В самой функции логика такая:
1) проверяется таймстам, если время отмены еще не наступило, то агент остается жить, если пора отменять, то
2) пытается найти заказ по id
3) если заказ найден, то проверяется не был ли он уже оплачен
4) если заказ не оплачен, то производится отмена
5) отправляется письмо на почту (для отладки)
На четвертом шаге все и останавливается!
Если закомментировать строчку с отменой
, то все нормально отрабатывает (кроме самой отмены заказа и связанных с ней действий, разумеется).
Если просто вызвать руками функцию агента в php консоли - все отрабатывает на ура (заказ отменяется, сообщение на почту уходит, все, что должно срабатывать при отмене заказа - срабатывает).
Подскажите, пожалуйста, в чем может быть проблема?
Есть ли какие-то ограничения на время выполнения агента и где их можно посмотреть?
Станет ли панацеей выполнение агентов по cron'у, а не по хитам?
Появилась проблема: при попытке отмены заказ используя агент, он "виснет". Т.е. заказ не отменяется и агент перестает вызываться (при этом он также остается висеть в списке агентов с просроченной датой запуска).
Логика работы такая.
Пользователь создает заказ на сайте.
Автоматически создается агент на отмену этого заказа, если он не был оплачен до определенной даты.
Функция агента прописана в init.php. В нее передается 2 параметра: id товара и таймстам когда нужно совершить отмену.
В самой функции логика такая:
1) проверяется таймстам, если время отмены еще не наступило, то агент остается жить, если пора отменять, то
2) пытается найти заказ по id
3) если заказ найден, то проверяется не был ли он уже оплачен
4) если заказ не оплачен, то производится отмена
5) отправляется письмо на почту (для отладки)
На четвертом шаге все и останавливается!
Если закомментировать строчку с отменой
Код |
---|
CSaleOrder::CancelOrder($order_id, "Y", "Заказ не был оплачен во время!"); |
Если просто вызвать руками функцию агента в php консоли - все отрабатывает на ура (заказ отменяется, сообщение на почту уходит, все, что должно срабатывать при отмене заказа - срабатывает).
Подскажите, пожалуйста, в чем может быть проблема?
Есть ли какие-то ограничения на время выполнения агента и где их можно посмотреть?
Станет ли панацеей выполнение агентов по cron'у, а не по хитам?