SoapClient PHP 5.6 Lento no IIS 7 (FastCgi), bom da CLI

SoapClient PHP 5.6 Lento no IIS 7 (FastCgi), bom da CLI

Eu tenho um script php que se conecta a um webservice.

Ao executar o mesmo script através da CLI, ele funciona bem (conexão inicial por segundo e chamadas para o serviço muito rápidas).

Ao executar a página em PHP através de um servidor IIS FastCGI, leva cerca de 5 segundos de atraso na primeira chamada para um método de serviço web.

A segunda chamada para o método webservice é rápida normalmente.

Qualquer conselho sobre onde verificar a seguir seria apreciado. Não sei como depurar ainda mais.

Estou usando o PHP 5.6.13 no IIS no Windows Server 2008 R2 Standard

Este é o script que estou usando para testar esse problema isoladamente (nome do serviço da web anonimizado porque não é acessível publicamente)

<?php 
define('SOAP_URL', 'https://sandbox.webservice.com/Service.asmx?WSDL');
define('SOAP_NAMESPACE', 'http://service.webservice.com/');

class WebService
{
  public $client;

  function __construct($SoapURL = SOAP_URL, $SoapNS = SOAP_NAMESPACE)
  {
    $soapHeader = array('User' => '...', 'SecretKey'=> '...');
    $this->client = new SoapClient($SoapURL, ['trace'=>true]);
    $header = new SOAPHeader($SoapNS, 'ClientAuth', $soapHeader);
    $this->client->__setSoapHeaders($header);
  }
}

var_dump(['start', $time = time()]);
$service = new WebService();
var_dump(['init', time() - $time]);
$params = [
    'option' => 1000,
...
    'loads_of_options_skipped' => 1,
];

$service->client->GetInfo(['for_id'=>34]);

var_dump(['call1', time() - $time]);

$service->client->GetInfo(['for_id'=>34]);

var_dump(['call2', time() - $time]);

A saída mostra um atraso de 4/5 segundos na saída de "call1".

esse atraso não ocorre se eu executar o script idêntico via CLI, nem em nosso antigo servidor web que era php 5.4

Responder1

Este problema não está relacionado ao SOAP, pois acabei de encontrar o mesmo problema com file_get_contents abrindo um URL. Parece haver um atraso na conexão em algum lugar. Não tenho ideia de por que isso ocorreria no IIS, mas não na linha de comando (executando o git bash no Windows)

informação relacionada