Когда я вызываю функции WS отдельно, он работает нормально, но когда я запускаю задание cron, которое использует несколько функций WS, SOMETIMES на некотором шаге выдает Failed sending HTTP SOAP request
. Я попытался инициализировать SoapClient
с параметрами trace=1,exceptions=1
, но все, что я получаю, - это одно и то же сообщение об ошибке с faultcode
значением HTTP
(это не имело никакого смысла). Я пытался изучить __getLastRequest
, __getLastRequestHeaders
, __getLastResponse
, __getLastResponseHeaders
и PHP debug_backtrace
, но ничего не смог найти. Я не думаю о том, что параметр PHP default_socket_timeout
является причиной этой проблемы, поскольку увеличение его не помогает. Как с этим бороться?Не удалось отправить запрос SOAP HTTP
ответ
Я расширил несколько журналов. После некоторых исследований я заметил, что если продолжительность между двумя вызовами для мыла составляет более 120 секунд (2 минуты), запрос терпит неудачу. Итак, я пришел к такому, что объект SoapClient
открывает HTTP-сокет, когда первый запрос отправляется на сервер и сохраняет его до тех пор, пока объект не будет уничтожен до тех пор, пока объект не будет уничтожен, но если между двумя вызовами у вас будет более 120 секундной задержки, сервер может отключить соединение, потому что значение по умолчанию keepAlive
(или connection_timeout
для IIS) составляет 120 секунд.
Что вы можете сделать, это повторно инициализировать объект класса SoapClient
или отправить случайный запрос на сервер, чтобы поддерживать соединение сокета HTTP. Я не смог найти лучшего решения.