SoapClient PHP 5.6 IIS 7(FastCgi)에서는 느림, CLI에서는 문제 없음

SoapClient PHP 5.6 IIS 7(FastCgi)에서는 느림, CLI에서는 문제 없음

웹 서비스에 연결하는 PHP 스크립트가 있습니다.

CLI를 통해 동일한 스크립트를 실행하면 정상적으로 실행됩니다(초기 연결에는 1초가 걸리고 서비스 호출은 매우 빠릅니다).

IIS FastCGI 서버를 통해 PHP에서 페이지를 실행하는 경우 웹 서비스 메서드에 대한 첫 번째 호출에서 약 5초 정도 지연됩니다.

webservice 메서드에 대한 두 번째 호출은 평소처럼 빠릅니다.

다음에 확인할 위치에 대한 조언을 주시면 감사하겠습니다. 추가로 디버깅하는 방법을 잃어버렸습니다.

Windows Server 2008 R2 Standard 내의 IIS에서 PHP 5.6.13을 사용하고 있습니다.

이것은 이 문제를 별도로 테스트하기 위해 사용하는 스크립트입니다(공개적으로 접근할 수 없으므로 웹 서비스 이름은 익명으로 처리됨).

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

출력은 "call1" 출력에서 ​​4/5초의 지연을 보여줍니다.

CLI를 통해 동일한 스크립트를 실행하거나 PHP 5.4였던 이전 웹 서버에서 실행하면 이 지연이 발생하지 않습니다.

답변1

이 문제는 SOAP와 관련이 없습니다. URL을 여는 file_get_contents와 동일한 문제를 방금 겪었기 때문입니다. 어딘가에서 연결이 지연되는 것 같습니다. 왜 이것이 IIS에서는 발생하지만 명령줄에서는 발생하지 않는지 모르겠습니다(Windows에서 git bash 실행).

관련 정보