Я знаю, как отключить WSDL-кеш в PHP, но как насчет принудительного повторного кэширования WSDL?
Это то, что я пробовал: я запускаю свой код с кешированием, установленным в отключенном состоянии, и появились новые методы, которые были обнаружены. Затем я активировал кеширование, но по какой-то причине мой старый неработающий wsdl появился снова. Итак: как я могу заставить мой новый WSDL перезаписать мой старый кеш?
Я думаю, когда вы отключите кеширование, он также прекратит запись в кеш. Поэтому, когда вы снова включаете кеш, старая кешированная копия все равно будет и действительна. Вы можете попробовать (с включенным кэшированием)
ini_set('soap.wsdl_cache_ttl', 1);
Я добавил время, чтобы жить в течение одной секунды, потому что я думаю, что если вы положите нуль, он полностью отключит кеш, но не удалит запись. Вероятно, вы захотите включить эту строку только в том случае, если хотите убить кешированную копию.
В моем php.ini есть запись, которая выглядит так:
soap.wsdl_cache_dir="/tmp"
В / tmp я нашел кучу файлов с именем wsdl- [some hexadecimal string]
Я могу очистить файлы кэша wsdl с помощью этой команды:
rm /tmp/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 и обратно