를 통해 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) );
ini_set('soap.wsdl_cache_ttl', 1);
하고 한 시간 동안 그대로 둘 때까지 wsdl 캐시 문제가 계속 발생 했습니다. 여기에서 찾을 수 있습니다. stackoverflow.com/questions/323561/…
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_enabled
PHP ini 설정 이 도움이되었습니다.나는 그것이 세 가지 모두의 조합인지 또는 일부 기능이 끔찍하게 구현되어 무작위로 쓸모없는 상태로 남아 있는지 또는 이해되지 않는 기능 계층이 있는지 확실하지 않습니다.
따라서 마지막으로 이러한 문제를 해결하려면 세 가지를 모두 확인해야합니다.