SoapClient PHP 5.6 Devagar no IIS 7 (FastCgi), bom do CLI

2

Tenho um script php que se conecta a um serviço da Web.

Ao executar o mesmo script por meio da CLI, ele é executado corretamente (conexão inicial de um segundo e chamadas para o serviço muito rapidamente).

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

A segunda chamada para o método de serviço da web é rápida normalmente.

Qualquer conselho sobre onde verificar em seguida será apreciado. Estou com uma perda de como depurar ainda mais.

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

Este é o script que estou usando para testar esse problema isoladamente (nome do serviço da web anônimo, pois 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 rodar o script idêntico via CLI, nem no nosso antigo servidor que era o php 5.4

    
por Bill Wilson 25.09.2015 / 13:07

1 resposta

1

Esse problema não está relacionado ao SOAP, pois acabei de encontrar o mesmo problema com file_get_contents ao abrir um URL. Parece haver um atraso na conexão em algum lugar. Eu não tenho idéia porque isso ocorreria no IIS, mas não na linha de comando (executando git bash no windows)

    
por 27.09.2015 / 10:22

Tags