В PHP, как вы можете очистить кеш WSDL?

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

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

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

 ini_set("soap.wsdl_cache_enabled", 0); 

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

 $client = new SoapClient('http://somewhere.com/?wsdl', array('cache_wsdl' => WSDL_CACHE_NONE) ); 

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

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

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

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

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

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

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

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

 rm /tmp/wsdl-* 

Только по причине документации:

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

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

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

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