За последние 24 часа нас посетили 22442 программиста и 1031 робот. Сейчас ищут 627 программистов ...

Целостность данных "Сервер-сервер-клиент"

Тема в разделе "Решения, алгоритмы", создана пользователем GreatWasp, 12 янв 2008.

  1. GreatWasp

    GreatWasp Активный пользователь

    С нами с:
    11 янв 2008
    Сообщения:
    94
    Симпатии:
    0
    Адрес:
    Узбекистан, Ташкент.
    Добрый день, возникла у меня проблемка.
    Значит есть система следующая: клиент заходит на определенный сайт, вводит некоторые данные и отправляет их на сервер системы. Следом, уже с сервера системы идет запрос на другой сервер (в биллинг поставщика услуг). Причем устроено это так:

    Всего на одну операцию идет два запроса:
    1) Создание транзакции в системе биллинга оператора
    2) Подтверждение этой транзакции (без этого не будет операции)

    Запросы даются по HTTPS просто GET запросом, в ответ дается XML с данными транзакциями.

    Так вот все вроде идеально работает, НО бывает такое:
    1) Серверная часть системы отсылает запрос на создание транзакции, получает ответ - и все ок.
    2) Следом она отправляет запрос на подтверждение транзакции.......... и тут
    3) что-то случается с каналом связи между поставщиком услуг и моей серверной частью. Соединение отрывает по таймАуту.

    Соответственно система думает что просто никакой ответ не пришел, а следовательно платеж не проведен. Хотя по сути то биллингу оператора похрен получил я данные назад или нет. И в результате в их биллинге операция прошла а в моем нет.
    Потом когда наши бухгалтеры делают сверку, то оказывается что некоторые данные потеряны. И их руками приходится вбивать. В день такая погрешность в среднем 1% - а это около 10 операций (в месяц 300)........ руками вбивать сложно. И парсер не могу написать чтобы автоматом вбивать погрешность так как поставщик услуг не присылает данные о потерянных платежах в текстовом виде, они делаю просто скриншот (!!!!!).

    Как с этим бороться? :?
    (есть идея сразу писать данные о соединениях, которые были по тайм-ауту отброшены, но тоже не выйдет, так как XML ответ на подтверждение транзакции все равно потом не дают, а там основное что мне нужно. VPN соединение между серверами тоже поднимать никто не хочет.).
     
  2. Anonymous

    Anonymous Guest

    В случае некомпетентности второй стороны практически единственное что можно сделать - только посочувствовать.
     
  3. GreatWasp

    GreatWasp Активный пользователь

    С нами с:
    11 янв 2008
    Сообщения:
    94
    Симпатии:
    0
    Адрес:
    Узбекистан, Ташкент.
    мда.... походу придется действительно мучаться :(
     
  4. vuzy

    vuzy Активный пользователь

    С нами с:
    11 мар 2010
    Сообщения:
    199
    Симпатии:
    0
    Адрес:
    киев
    попроси операторов убить такие таймауты в своих скриптах и убей их у себя есть функция которая отключает такой таймаут и функция может выполнятся хоть целый час... А не 30 секунд.
     
  5. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    не думаю что спустя 2 года ему это поможет )