Через php_info()
, где хранится кеш WSDL (/tmp
), но я не обязательно знаю, можно ли удалить все файлы, начинающиеся с WSDL.
Да, я мог бы просто удалить все из /tmp
, но я не знаю, что еще это может повлиять, если я удалю все файлы WSDL.
Через 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 помогла.Теперь я не уверен, что это комбинация всех трех, или если некоторые функции ужасно реализованы, поэтому они могут бесполезно беспорядочно или если некоторая иерархия не понятых функций.
Итак, ожидайте, что вы должны проверить все три, чтобы решить такие проблемы.
Отредактируйте файл 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