Un service.wsdl local encara pot fer que SoapClient obtingui documents remots durant la construcció. Fer local el primer fitxer només elimina aquesta primera descàrrega:

local service.wsdl
  → internal Common.xsd
  → external Types.xsd
       → another schema location

Comenceu per la primera obtenció fallida, abans de la primera crida de negoci SOAP. Llisteu cada importació de WSDL i cada ubicació d'esquema, incloent-hi els documents als quals fan referència al seu torn. Conserveu l'URL base o el camí emprat per resoldre cada referència relativa. Separeu els hosts interns dels recursos que realment necessiten el proxy extern.

Un proxy de SoapClient explícit pot enviar un esquema intern a través d'un intermediari amb una visió DNS o una política d'accés diferents. Una variable no_proxy a nivell de procés no demostra que aquest camí de càrrega la llegeixi. Feu servir les opcions documentades per a la vostra versió de PHP; anomenar una opció com una variable d'entorn no crea un selector per importació.

Per desplegar les definicions completament en local, obteniu les versions aprovades de tot el conjunt de dependències, actualitzeu les ubicacions d'importació aplicables al paquet local i preserveu-ne les bases de camins relatius. Versionen conjuntament aquests documents perquè un WSDL arrel nou no faci servir tipus obsolets.

No toqueu els identificadors d'espai de noms. Poden semblar URL, però identifiquen el vocabulari de l'esquema en lloc de dir al carregador d'on obtenir un fitxer. Substituir-los pot canviar el contracte del servei.

Torneu a provar la construcció amb l'estat de la memòria cau registrat: les definicions emmagatzemades poden amagar una dependència que falta en una màquina. La substitució de l'URL del servei s'aplica en una etapa posterior, i un __doRequest() personalitzat gestiona l'intercanvi SOAP; no cal suposar que cap dels dos reescrigui o intercepti totes les descàrregues d'esquema en temps de construcció.

Articles relacionats