[php] PHP에서 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에 정의 된 모든 캐시 파일의 기본 위치에 캐시됩니다. 세션 파일과 동일한 위치.


답변

코드를 이미 배포했거나 구성을 변경할 수없는 경우 wsdl에서 모든 임시 파일을 제거 할 수 있습니다.

rm /tmp/wsdl-*


답변

wsdl URL에서 캐시 버스터를 사용하는 것이 좋습니다.

우리 앱에서는 wsdl URL에 SVN 개정 ID를 사용하므로 클라이언트는 구조 변경을 즉시 알 수 있습니다. 이것은 우리 앱에서 작동합니다. 왜냐하면 서버 측을 변경할 때마다 그에 따라 클라이언트도 조정해야하기 때문입니다.

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

이를 위해서는 svn이 올바르게 구성되어야합니다. 모든 저장소에서 이것은 기본적으로 활성화되어 있습니다.

두 구성 요소 (서버, 클라이언트)에 대한 책임이 없거나 SVN을 사용하지 않는 경우 wsdl URL에서 캐시 버스터로 활용할 수있는 다른 표시기를 찾을 수 있습니다.


답변

문서화 이유 :

나는 지금 (2014)이 모든 가치 있고 올바른 접근 방식 중에서 오직 하나만이 성공했음을 관찰했습니다. 서버의 WSDL에 기능을 추가했는데 클라이언트가 새 기능을 인식하지 못했습니다.

  • 첨가 WSDL_CACHE_NONE매개 변수를 해도 도움이되지 않았습니다.
  • 캐시 버스터를 추가해도 도움이되지 않았습니다.
  • soap.wsdl_cache_enabledPHP 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


답변