Я новичок в веб-сервисах. Я испытываю необъяснимо случайное время выполнения конструктора SoapClient. Обычно вызов занимает около 10 секунд. Иногда это занимает менее одной секунды, но это явление встречается реже.PHP SoapClient конструктор очень медленный
PHP SoapClient Constructor extremely slow
PHP: SoapClient constructor is very slow (takes 3 minutes)
Connecting to WCF Web Service is inexplicably slow
Моя ситуация похожа на те, в вышеупомянутых нитей, но решения, предложенные в них не решить мою проблему.
// config params
$params = array(
'trace' => 1,
'soap_version' => SOAP_1_1,
'cache_wsdl' => WSDL_CACHE_MEMORY
);
// this call takes about 10 seconds to remote WSDL
$soap_client = new SoapClient(WSDL_URL,$params);
Я играл с различными параметрами кэширования и WSDL нашел WSDL_CACHE_MEMORY быть самым быстрым. При использовании других параметров кэширования вызов занимает в среднем около 25 секунд.
Я не пользуюсь несколькими пользователями.
Я изменил wsdl_cache_dir в дружественный Windows каталог в php.ini.
Мой вопрос два раза:
Почему конструктор SoapClient, казалось бы, случайным образом в том, как долго это берет, чтобы выполнить? Почему это обычно занимает больше времени, но иногда требуется только секундная смена? Есть ли тест, который я могу выполнить, чтобы узнать, почему он ведет себя таким образом?
Должен ли я кэшировать/сохранять объект SoapClient или ресурс, чтобы при перемещении посетителей моей страницы со страницы на страницу мне не нужно было создавать новый SoapClient и повторно разбирать WSDL? Каков рекомендуемый подход для этого?
Любая помощь или толчок в правильном направлении были бы очень важны. Спасибо.
ли файл WSDL локальный или удаленный? – datasage
@ datasage Я попробовал оба. Сначала локальный, затем удаленный. Более быстрое время выполнения с помощью пульта. – cre8value
попытаться создать тестовый клиент с soapui - http://www.soapui.org/ тоже медленно? – herrjeh42