PHP: лучше ли закрыть соединение SoapClient? - PullRequest
0 голосов
/ 06 сентября 2018

Я создал следующую вспомогательную функцию:

function mainSoap(){
    return new SoapClient('https://soap.url',[
        'stream_context' => stream_context_create([
            'ssl' => [
                'verify_peer' => false,
                'verify_peer_name' => false,
                'allow_self_signed' => true
            ]
        ]);
    ]);
}

и я использую его как $result=mainSoap()->GetSometing($parameters);

Все отлично работает , но с точки зрения производительности хотелось бы узнать, лучше ли закрыть мыльную связь или нет.

UPDATE

Я создал другую функцию, чтобы закрыть соединение после получения ответа, но я все еще не смог найти метод close для SoapClient.

function mainSoap(string $call=null, array $vars=[]){
    $url="https://soap.url";
    $wsdl=new SoapClient($url,[
        'trace' => false,
        'keep_alive' => false,
        'stream_context' => stream_context_create([
            'ssl' => [
                'verify_peer' => false,
                'verify_peer_name' => false,
                'allow_self_signed' => true
            ]
        ]),
        'compression'   => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | SOAP_COMPRESSION_DEFLATE
    ]);
    $response=$wsdl->__soapCall($call,$vars);
    //Looking for something like $wsdl->close();
    return $response;
}

и я использую его как $result=mainSoap('GetSometing',[$parameters]);

1 Ответ

0 голосов
/ 17 октября 2018

SoapClient соответствует обычному жизненному циклу HTTP-запроса,

То есть ваш SoapClient не поддерживает постоянное соединение с сервером , он будет подключаться и получать данные только при вызове, аналогично тому, как ваш браузер не поддерживает соединение с сервером после завершения запроса, так как запрос завершается, если вы не установили для keep_alive значение true.

Короче говоря, вы не можете "закрыть" SoapClient, потому что после того, как вы его вызвали, закрывать нечего, соединение уже закрыто.

Соответствующие ссылки:

...