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






Я бы попробовал
$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 и обратно
Удалите старый WSDL из кеша.
Я думаю, когда вы отключите кеширование, он также перестанет писать в кеш. Поэтому, когда вы снова включите кеш, старая кешированная копия все еще будет там и действительна. Вы можете попробовать (с включенным кешированием)
ini_set('soap.wsdl_cache_ttl', 1);
Я установил время жизни в одну секунду, потому что я думаю, что если вы установите ноль, это полностью отключит кеш, но не удалит запись. Вы, вероятно, захотите вставить эту строку только тогда, когда хотите убить кешированную копию.
Это ЕДИНСТВЕННЫЙ ответ, который действительно работает. СПАСИБО.
Вы сделали мой день!
В моем php.ini есть запись, которая выглядит так:
soap.wsdl_cache_dir = "/tmp"
В / tmp я нашел кучу файлов с именем wsdl- [какая-то шестнадцатеричная строка]
Я могу очистить кешированные файлы wsdl с помощью этой команды:
rm /tmp/wsdl-*
Не лучшее решение. У меня нет доступа к серверу ... и даже если он есть ... работает много мыльных служб. Было бы невозможно узнать, какой файл кеша соответствует ws, над которым я сейчас работаю
Не лучшее решение. У меня нет доступа к серверу ... и даже если он есть ... работает много мыльных служб. Было бы невозможно узнать, какой файл кеша соответствует ws, над которым я сейчас работаю