SoapClient PHP 5.6, Медленный в IIS 7 (FastCgi), прекрасный от CLI

У меня есть сценарий PHP, который соединяется с веб-сервисом.

При запущении того же скрипта через CLI это хорошо работает (начальное соединение секунда, и призывает к сервису очень быстрый).

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

Второй вызов к методу веб-сервиса быстр как нормальный.

Любой совет относительно того, где проверить затем, ценился бы. Я в замешательстве того, как отладить далее.

Я использую PHP 5.6.13 на IIS В рамках Стандарта Windows Server 2008 R2

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

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

ouput показывает задержку 4/5 секунд на выводе "call1".

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

2
задан 25 September 2015 в 16:04
1 ответ

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

1
ответ дан 3 December 2019 в 12:44

Теги

Похожие вопросы