2015-07-24 8 views
0

Когда я вызываю функции 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

ответ

0

Я расширил несколько журналов. После некоторых исследований я заметил, что если продолжительность между двумя вызовами для мыла составляет более 120 секунд (2 минуты), запрос терпит неудачу. Итак, я пришел к такому, что объект SoapClient открывает HTTP-сокет, когда первый запрос отправляется на сервер и сохраняет его до тех пор, пока объект не будет уничтожен до тех пор, пока объект не будет уничтожен, но если между двумя вызовами у вас будет более 120 секундной задержки, сервер может отключить соединение, потому что значение по умолчанию keepAlive (или connection_timeout для IIS) составляет 120 секунд.

Что вы можете сделать, это повторно инициализировать объект класса SoapClient или отправить случайный запрос на сервер, чтобы поддерживать соединение сокета HTTP. Я не смог найти лучшего решения.