Как в PHP очистить кеш WSDL?

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
93
0
140 203
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

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

ini_set("soap.wsdl_cache_enabled", 0);

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

$client = new SoapClient('http://somewhere.com/?wsdl', array('cache_wsdl' => WSDL_CACHE_NONE) );

Я считаю, что при использовании SoapClient вместо жесткого кодирования 0 рекомендуется использовать определенную константу WSDL_CACHE_NONE. См. php.net/manual/en/soapclient.soapclient.php

Dan Burton 23.07.2010 00:09

В любом случае, я могу оставить функцию кеширования как есть, но как временно аннулировать весь кеш? Мы можем легко сделать это в .net и т. д.

Kamran Shahid 07.01.2015 16:49

Это решение очищает кеш, но это также является компромиссом для производительности.

Nabeel Arshad 08.01.2015 08:35

Для фактической очистки кеша, даже несмотря на то, что файлы / tmp были удалены, у меня все еще возникали проблемы с кешем wsdl, пока я не использовал этот параметр ini_set('soap.wsdl_cache_ttl', 1); и не оставил его на час - здесь: stackoverflow.com/questions/323561/…

Joshua Fricke 29.09.2016 20:51

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

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

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

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

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

Некоторые серверы SOAP не будут обслуживать WSDL, если присутствует другой параметр.

Raphael Riel 24.03.2014 17:42

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

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

Не могли бы вы сообщить мне, где находится эта папка tmp?

Kamran Shahid 07.01.2015 16:51

Это в / tmp. Php может быть настроен на использование другого местоположения, вы можете найти его, выполнив php -i | grep wsdl_cache_dir

siliconrockstar 16.11.2015 21:32

Это было для меня. Примечание: я использовал докер-сочинять, поэтому мне пришлось запустить docker-compose rm <контейнер> перед выполнением нового докер-сочинять.

conradkleinespel 15.03.2016 17:32

Вы можете найти папку для кэша wsdl с помощью "php -i | grep soap.wsdl_cache_dir"

Daniel Müller 31.07.2017 10:55

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

rm /tmp/wsdl-*

Я тоже этим занимаюсь, если вы используете WSDL_CACHE_DISK

carlosvini 27.02.2015 21:08

В Windows по умолчанию используется c: \ tmp.

b3wii 14.09.2018 12:45

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

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

  • Добавление WSDL_CACHE_NONE в параметры не помогло.
  • Добавление кеш-бастера не помогло.
  • Помогла установка soap.wsdl_cache_enabled на PHP ini.

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

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

FYI ini_set ("soap.wsdl_cache_enabled", WSDL_CACHE_NONE); отлично работал у меня

hobailey 19.05.2015 18:50

Отредактируйте файл 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

Другие вопросы по теме