Как заставить отработать скрипт заного при разрые соединения с сервером?
Здравствуйте уважаемые пользователи
Вот такая недавно возникла проблема.
На сайте есть некий товар, который оплачивается через робокассу. Список товаров берется через протокол SOAP с локального сервера. Там есть своеобразный API для этого, состоящий из 2-х основных методов:
ReserveService - отвечает за резервирование в системе единицы товара. SoldService - тут содержится список товаров, которые перед оплатой ранее были зарезервированы в ReserveService и затем были оплачены через платежную систему.
То есть система работает очень просто. Товар создается в ReserveService, затем если оплата прошла успешно, создается еще и в SoldService
А проблема вот в чем, когда все прошло успешно, товар был зарезервирован и далее его идентификатор заказа был отправлен в робокассу, и человек успешно перевел деньги на счет системы оплаты, робокасса отправила в специальный скрипт (как по документации это result.php) некие данные что все прошло.
Далее, скрипт эти данные принял, попытался соединиться с сервером (где содержится метод SoldService, чтобы создать как бы оплаченный товар) и не смог, возникла ошибка соединения, товар в SoldService не создался, но оплата в робокассе прошла, в этом то вся и проблема.
Фактически у нас есть все данные какие товары были в заказе и так далее, но не совсем понятно как можно повторить такую операцию повторно, даже если пользователь закроет браузер. Как-то отследить такие проблемные товары, и попробовать автоматически(например через мин 5) повторить их создание, до победного.
Проверяешь если к базе не было соединения то создаёшь файл с этой транзакцией к примеру
transaction.ini или json с информацией которую нужно было занести в базу а потом кроном чекаешь каждые 5 минут обработчик который будет выполнять необходимые запросы из файла.
Что то вроде такого может. А вообще лучше бы делать так чтобы при критической ошибке всё равно какой либо файл работал независимо от того работают ли другие или нет.
Спасибо за скрипт=) Но, к сожалению, доступ в SoldService, который может выдать критическую ошибку, происходит только через SOAP с возможостью API только создавать в нем заказ, а напрямую к базе данных подключиться нельзя. Необходимо как-то отследить ошибку именно коннекта к серверу. Например, если есть критическая ошибка, значит создаем транзакцию, если нет то нет =)
Пинг, к сожалению, заблокирован (видимо в целях безопасности) =) Сервер сторонней организации, занимающейся вот такими "безопасными" методами хранения товаров и заказов. Есть ли возможность отследить возникновние критической ошибки на стороне сайта?