В PHP, как вы можете очистить кэш WSDL? - PullRequest
82 голосов
/ 20 ноября 2008

Через php_info(), где хранится кэш WSDL (/tmp), но я не обязательно знаю, безопасно ли удалять все файлы, начиная с WSDL.

Да, я должен иметь возможность просто удалить все из /tmp, но я не знаю, что еще это может повлиять, если я удалю все файлы WSDL.

Ответы [ 6 ]

179 голосов
/ 20 ноября 2008

Вы можете безопасно удалить файлы кэша WSDL. Если вы хотите предотвратить кэширование в будущем, используйте:

ini_set("soap.wsdl_cache_enabled", 0);

или динамически:

$client = new SoapClient('http://somewhere.com/?wsdl', array('cache_wsdl' => WSDL_CACHE_NONE) );
21 голосов
/ 01 февраля 2014

удалить все файлы wsdl * в папке / tmp на сервере.

Файлы WSDL кэшируются в вашем местоположении по умолчанию для всех файлов кэша, определенных в php.ini. То же место, что и файлы вашего сеанса.

12 голосов
/ 01 августа 2013

Я рекомендую использовать кеш-буфер в URL-адресе wsdl.

В наших приложениях мы используем идентификатор ревизии SVN в URL-адресе wsdl, чтобы клиент сразу узнал об изменении структур. Это работает в нашем приложении, потому что каждый раз, когда мы меняем серверную часть, мы также должны соответствующим образом настраивать клиента.

$client = new SoapClient('http://somewhere.com/?wsdl&rev=$Revision$');

Для этого требуется, чтобы svn был правильно настроен. Не во всех репозиториях это включено по умолчанию.

В случае, если вы не несете ответственности за оба компонента (сервер, клиент) или не используете SVN, вы можете найти другой индикатор, который можно использовать в качестве кеша в вашем wsdl URL.

8 голосов
/ 17 апреля 2014

Если вы уже развернули код или не можете изменить какую-либо конфигурацию, вы можете удалить все временные файлы из wsdl:

rm /tmp/wsdl-*
4 голосов
/ 26 июля 2014

Просто по причине документации:

Я сейчас (2014) заметил, что из всех этих ценных и правильных подходов только один был успешным. Я добавил функцию в WSDL на сервере, и клиент не распознал новую функцию.

  • Добавление WSDL_CACHE_NONE к параметрам не помогло.
  • Добавление кеша не помогло.
  • Установка soap.wsdl_cache_enabled в PHP ini помогла.

Теперь я не уверен, является ли это комбинацией всех трех, или некоторые функции реализованы ужасно, так что они могут остаться бесполезными в случайном порядке, или если есть некоторая иерархия функций, которые не поняты.

Итак, наконец, ожидайте, что вы должны проверить все три, чтобы решить подобные проблемы.

0 голосов
/ 10 мая 2019

Отредактируйте файл php.ini, найдите soap.wsdl_cache_enabled и установите значение 0

[soap]
; Enables or disables WSDL caching feature.
; http://php.net/soap.wsdl-cache-enabled
soap.wsdl_cache_enabled=0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...