Добрый день, возникла у меня проблемка. Значит есть система следующая: клиент заходит на определенный сайт, вводит некоторые данные и отправляет их на сервер системы. Следом, уже с сервера системы идет запрос на другой сервер (в биллинг поставщика услуг). Причем устроено это так: Всего на одну операцию идет два запроса: 1) Создание транзакции в системе биллинга оператора 2) Подтверждение этой транзакции (без этого не будет операции) Запросы даются по HTTPS просто GET запросом, в ответ дается XML с данными транзакциями. Так вот все вроде идеально работает, НО бывает такое: 1) Серверная часть системы отсылает запрос на создание транзакции, получает ответ - и все ок. 2) Следом она отправляет запрос на подтверждение транзакции.......... и тут 3) что-то случается с каналом связи между поставщиком услуг и моей серверной частью. Соединение отрывает по таймАуту. Соответственно система думает что просто никакой ответ не пришел, а следовательно платеж не проведен. Хотя по сути то биллингу оператора похрен получил я данные назад или нет. И в результате в их биллинге операция прошла а в моем нет. Потом когда наши бухгалтеры делают сверку, то оказывается что некоторые данные потеряны. И их руками приходится вбивать. В день такая погрешность в среднем 1% - а это около 10 операций (в месяц 300)........ руками вбивать сложно. И парсер не могу написать чтобы автоматом вбивать погрешность так как поставщик услуг не присылает данные о потерянных платежах в текстовом виде, они делаю просто скриншот (!!!!!). Как с этим бороться? :? (есть идея сразу писать данные о соединениях, которые были по тайм-ауту отброшены, но тоже не выйдет, так как XML ответ на подтверждение транзакции все равно потом не дают, а там основное что мне нужно. VPN соединение между серверами тоже поднимать никто не хочет.).
В случае некомпетентности второй стороны практически единственное что можно сделать - только посочувствовать.
попроси операторов убить такие таймауты в своих скриптах и убей их у себя есть функция которая отключает такой таймаут и функция может выполнятся хоть целый час... А не 30 секунд.