Как в PHP можно очистить кэш WSDL?


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

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

Author: 7ochem, 2008-11-20

5 answers

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

ini_set("soap.wsdl_cache_enabled", 0);

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

$client = new SoapClient('http://somewhere.com/?wsdl', array('cache_wsdl' => WSDL_CACHE_NONE) );
 172
Author: Owen, 2011-11-15 08:51:26

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

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

 20
Author: user3259435, 2014-02-01 01:59:24

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

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

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

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

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

 12
Author: staabm, 2013-08-01 10:34:00

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

rm /tmp/wsdl-*
 7
Author: Markomafs, 2014-04-16 21:30:38

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

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

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

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

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

 4
Author: peter_the_oak, 2014-07-26 15:09:37