После МНОЖЕГО попыток я наткнулся на решение, которое предотвратило такое поведение.
Проблема заключалась в индикаторе SoapClient keep_alive
.
Создавая SoapClient
с ложным флагом keep_alive
$soapClient = new \SoapClient($wsdl,[
'trace' => 1,
'features' => SOAP_SINGLE_ELEMENT_ARRAYS,
'keep_alive' => false,
'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP,
'cache_wsdl' => WSDL_CACHE_MEMORY
]);
, вы запрещаете ему устанавливать соединение с поддержкой активности, поэтому каждый вызов будет создавать совершенно новое соединение с веб-службой.
Это не может быть супероптимизировано, но в моем долгосрочном контексте сценария предотвращает странную ошибку, которая у меня была, и проверяя это в течение долгого времени (часы), ошибка никогда не возвращалась
Это не допустимо для использования? снова.? должен указать на запуск списка параметров. И должен разделить параметры.
От RFC 3986:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
От RFC 1738:
URL HTTP принимает форму:
http:// <host> : <port> / <path> ? <searchpart>
где
<host>
и<port>
как описаны в Разделе 3.1. Если:<port>
опущен, значения по умолчанию порта к 80. Никакое имя пользователя или пароль не позволяется.<path>
селектор HTTP, и<searchpart>
строка запроса.<path>
является дополнительным, как<searchpart>
и его предыдущее"?". Если ни один<path>
ни<searchpart>
присутствует, "/" может также быть опущен.В
<path>
и<searchpart>
компоненты, "/", ";", "?" резервируются. "/" символ может использоваться в HTTP для обозначения иерархической структуры.
Как упомянуто, это не допустимо для использования его снова. Однако, если Вы имеете? символ как часть значения параметра, можно закодировать его %63 (точно так же, как пробел, который кодируется как %20).
application/x-www-form-urlencoded
Это - тип контента по умолчанию. Формы, отправленные с этим типом контента, должны быть закодированы следующим образом:
- Имен элементов управления и значений оставляют. Пробелы заменяются
+
, и затем зарезервированных символов оставляют, как описано в [RFC1738], разделяют 2.2: неалфавитно-цифровые символы заменяются%HH
, знак процента и две шестнадцатеричных цифры, представляющие код ASCII символа. Разрывы строки представлены как пары "CR LF" (т.е.%0D%0A
).- Имена/значения управления перечислены в порядке, они появляются в документе. Имя разделяется от значения
=
и пары имя/значение разделяются друг от друга&
.