Принудительно повторно кэшировать WSDL в php

Я знаю, как отключить WSDL-кэш в PHP. , а как насчет принудительного повторного кэширования WSDL?

Вот что я пробовал: я запускал свой код с отключенным кешированием, и новые методы отображались, как и ожидалось. Потом активировал кеширование, но почему-то снова обнаружился мой старый нерабочий wsdl. Итак: как я могу заставить мой новый WSDL перезаписать мой старый кеш?


person qualbeen    schedule 27.11.2008    source источник


Ответы (4)


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

ini_set('soap.wsdl_cache_ttl', 1);

Я установил время жизни в одну секунду, потому что я думаю, что если вы поставите ноль, это полностью отключит кеш, но не удалит запись. Вы, вероятно, захотите вставить эту строку только тогда, когда хотите убить кешированную копию.

person Tom Haigh    schedule 27.11.2008
comment
Это ЕДИНСТВЕННЫЙ ответ, который я видел, который действительно работает. СПАСИБО. - person dev; 16.01.2015
comment
Вы сделали мой день! - person Peter Knut; 07.12.2017

В моем php.ini есть запись, которая выглядит так:

soap.wsdl_cache_dir="/tmp"

В /tmp я нашел кучу файлов с именем wsdl-[какая-то шестнадцатеричная строка]

Я могу очистить кэшированные файлы wsdl с помощью этой команды:

rm /tmp/wsdl-*
person G Mawr    schedule 19.05.2009
comment
Не очень хорошее решение. У меня нет доступа к серверу... и даже если он есть... там работает много мыльных сервисов. Было бы невозможно узнать, какой файл кеша соответствует ws, над которым я сейчас работаю. - person Diego Favero; 04.12.2013

Удалите старый WSDL из кеша.

person foxy    schedule 27.11.2008
comment
Не очень хорошее решение. У меня нет доступа к серверу... и даже если он есть... там работает много мыльных сервисов. Было бы невозможно узнать, какой файл кеша соответствует ws, над которым я сейчас работаю. - person Diego Favero; 04.12.2013

я бы попробовал

$limit = ini_get('soap.wsdl_cache_limit');
ini_set('soap.wsdl_cache_limit', 0);
ini_set('soap.wsdl_cache_limit', $limit);

Или, возможно, установите soap.wsdl_cache_ttl на 0 и обратно

person Greg    schedule 27.11.2008