За последние 24 часа нас посетили 9376 программистов и 930 роботов. Сейчас ищут 308 программистов ...

Попытаться разобраться в интеграции... [РЕШЕНО]

Тема в разделе "PHP Free-Lance", создана пользователем [rip.savage], 3 дек 2021.

Метки:
  1. [rip.savage]

    [rip.savage] Активный пользователь

    С нами с:
    10 апр 2018
    Сообщения:
    9
    Симпатии:
    0
    Ну собственно. Есть сайт, работающий на 5cms, программисту была поставлена задача интегрировать поступление (по сути копирование) заказов в логистическую систему (maxoptra). В первое время всё работало отлично, заказы передавались (при создании) в логистику, всё ок.
    Но с какого то времени начала возникать ошибка 500. Я пытался разобраться в ситуации но не смог отловить 500 ошибку, и при помощи разработчиков увидел следующее:

    PHP:
    1. Fatal error: Uncaught GuzzleHttp\Exception\ConnectException: cURL error 28: Operation timed out after 2001 milliseconds with 0 bytes received (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) in /home/v/vagontrade/jaromaks-ru/public_html/api/maxoptra/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:200 Stack trace: #0 /home/v/vagontrade/jaromaks-ru/public_html/api/maxoptra/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(155): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array) #1 /home/v/vagontrade/jaromaks-ru/public_html/api/maxoptra/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(105): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #2 /home/v/vagontrade/jaromaks-ru/public_html/api/maxoptra/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Ha in /home/v/vagontrade/jaromaks-ru/public_html/api/maxoptra/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php on line 200
    Сервис логистики отвечает что это где то там:
    Судя по ошибке, проблема на стороне обработчика, мы не сможем помочь с выяснением проблемы у сторонней программы.

    Кто возьмется разобраться и вылечить?
    Наверное опт с guzzlehttp поможет с решением.
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.189
    Симпатии:
    1.654
    Таймаут увеличивать нужно
     
    [rip.savage] нравится это.
  3. [rip.savage]

    [rip.savage] Активный пользователь

    С нами с:
    10 апр 2018
    Сообщения:
    9
    Симпатии:
    0

    PHP:
    1. $this->client = new Client([
    2.             'base_uri' => $this->api_url,
    3.             'timeout'  => 10.0,
    4.             'verify' => false
    5.         ]);
    увеличил до 10 секунд - тоже самое ошибка 500, не решило проблему...
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.189
    Симпатии:
    1.654
    ОК, ждите предложений.
     
  5. [rip.savage]

    [rip.savage] Активный пользователь

    С нами с:
    10 апр 2018
    Сообщения:
    9
    Симпатии:
    0
    Не вижу сообщения про полный текст ошибки(хотя в уведомлениях есть), он выглядит вот так:

    Fatal error: Uncaught GuzzleHttp\Exception\ConnectException: cURL error 28: Operation timed out after 2001 milliseconds with 0 bytes received (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) in /home/v/vagontrade/jaromaks-ru/public_html/api/maxoptra/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:200 Stack trace: #0 /home/v/vagontrade/jaromaks-ru/public_html/api/maxoptra/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(155): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array) #1 /home/v/vagontrade/jaromaks-ru/public_html/api/maxoptra/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php(105): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #2 /home/v/vagontrade/jaromaks-ru/public_html/api/maxoptra/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Ha in /home/v/vagontrade/jaromaks-ru/public_html/api/maxoptra/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php on line 200
     
  6. brevis

    brevis Новичок

    С нами с:
    23 июл 2019
    Сообщения:
    64
    Симпатии:
    20
    @[rip.savage] выполните, пожалуйста, на своем сервере команду:
    Код (Text):
    1. curl -X POST http://beta.maxoptra.com/rest/2/authentication/createSession\?accountID\=ws\&password\=dontpreach\&user\=paul.rooney
    Если получите ответ в виде xml с id сессии -- проблема в коде. Если не получите -- проблема в сервере.
     
  7. [rip.savage]

    [rip.savage] Активный пользователь

    С нами с:
    10 апр 2018
    Сообщения:
    9
    Симпатии:
    0
  8. brevis

    brevis Новичок

    С нами с:
    23 июл 2019
    Сообщения:
    64
    Симпатии:
    20
    Очень вероятно. Убедитесь, что в $this->api_url и тд попадают корректные данные (валидный url, правильное имя аккаунта и тд).
     
  9. [rip.savage]

    [rip.savage] Активный пользователь

    С нами с:
    10 апр 2018
    Сообщения:
    9
    Симпатии:
    0
    @brevis, понимаете весь парадокс ситуации в том, что проблема с "плавающей точкой", что я имею ввиду, я тут статистику подсобрал немного. За последние два часа, из 23 поступивших заказов, "нормально", т.е. без ошибки 500 прошло лишь шесть... Как я это понял: при создании заказа в папке log должно появляться два текстовых файла, один вида
    Код (Text):
    1. xml_last_30516:55cc2d88_2021-12-07_16-50-03.txt
    там находится сам заказ, и еще вида
    Код (Text):
    1. xml_s_30514:ae608c56_2021-12-07_16-24-35.txt
    в котором должно быть следующее содержание:
    Код (CSS):
    1. <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
    2. <apiResponse version="1.0">
    3. <orders>
    4. <order>
    5.        <orderReference>30514:ae608c56</orderReference>
    6.        <status>Created</status>
    7. </order>
    8. </orders>
    9. </apiResponse>
    я так понимаю этот файл должен создаваться после прихода ответа от логистики о статусе заказа, так вот этот ответ пришел шесть раз из двадцати трех...как так происходит - загадка.
     
  10. brevis

    brevis Новичок

    С нами с:
    23 июл 2019
    Сообщения:
    64
    Симпатии:
    20
    Ну если иногда работает, а иногда нет -- вероятность проблемы в коде все выше :)
    Возможно, в некоторых случаях xml запроса формируется некорректно (может нужно банально заэкранировать какие-то данные). Нужно поизучать файлы с заказами, на которых возникает ошибка.
     
  11. [rip.savage]

    [rip.savage] Активный пользователь

    С нами с:
    10 апр 2018
    Сообщения:
    9
    Симпатии:
    0
    @mkramer @brevis

    PHP:
    1. $this->client = new Client([
    2.            'base_uri' => $this->api_url,
    3.            'timeout' => 5.0,
    4.            'verify' => false
    5.        ]);
    мда, первая версия оказалась верной, поставил 5 секунд, всё стало работать корректно. просто надо было править рабочий файл, а не его копию в папке maxptra. Всем спасибо, за помощь, тему можно закрывать.