PHP SoapClient Constructor чрезвычайно медленный - PullRequest
4 голосов
/ 22 сентября 2011

Я пытаюсь выполнить некоторые тесты на SOAP API и испытываю крайне медленное время выполнения. Я немного покопался и обнаружил, что это конструктор SoapClient, который выполняется вечно. Я также попытался использовать для него прокси-сервер, чтобы определить, является ли это HTTP-запросом, полученным в результате этого, но этот запрос выполняется относительно быстро ... после запроса он задерживается на 30 секунд.

Вот скриншот kcachegrind для справки:

kcachegrind

А вот запрос WSDL в Прокси Чарльза:

charles proxy

Об этой же проблеме пару месяцев назад сообщалось здесь:

PHP: конструктор SoapClient работает очень медленно (занимает 3 минуты)

Но он не получил ответа.

Любые предложения приветствуются.

Edit:

Часть кода, где запускается SoapClient (это часть PHP-инструментария NetSuite)

        $this->client = new SoapClient( $host . "/wsdl/v" . $endpoint . "_0/netsuite.wsdl",

                                    array(  "location"              => $host . "/services/NetSuitePort_" . $endpoint,

                                            "trace"                 => 1,

                                            "connection_timeout"    => 5,

                                            "typemap"               => $typemap,

                                            "user_agent"            => "PHP-SOAP/" . phpversion() . " + NetSuite PHP Toolkit " . $version

                                    )

    );

1 Ответ

4 голосов
/ 26 сентября 2011

Вы используете несколько пользователей? Я получал 3-20 минутные задержки в одной и той же строке кода, которая, как оказалось, была связана с несколькими пользователями, вызывая выборку нескольких копий wsdl http://www.ozonesolutions.com/programming/2011/05/nsclient-login-time/

...