SoapClient PHP 5.6 Медленно в IIS 7 (FastCgi), нормально из CLI

SoapClient PHP 5.6 Медленно в IIS 7 (FastCgi), нормально из CLI

У меня есть PHP-скрипт, который подключается к веб-сервису.

При запуске того же скрипта через CLI он работает нормально (первоначальное соединение за секунду и вызовы к службе очень быстрые).

При запуске страницы на PHP через сервер IIS FastCGI задержка при первом вызове метода веб-сервиса составляет около 5 секунд.

Второй вызов метода веб-сервиса выполняется так же быстро, как обычно.

Буду признателен за любые советы о том, где еще проверить. Я не знаю, как дальше отлаживать.

Я использую PHP 5.6.13 на IIS в Windows Server 2008 R2 Standard

Это скрипт, который я использую для изолированного тестирования этой проблемы (имя веб-сервиса анонимно, поскольку оно не является общедоступным)

<?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]);

На выходе отображается задержка в 4/5 секунд на выходе «call1».

эта задержка не возникает, если я запускаю идентичный скрипт через CLI, а также на нашем старом веб-сервере, на котором был PHP 5.4

решение1

Эта проблема не связана с SOAP, так как я только что столкнулся с той же проблемой с file_get_contents, открывающим URL. Кажется, где-то есть задержка в соединении. Я понятия не имею, почему это происходит в IIS, но не в командной строке (запуск git bash в windows)

Связанный контент