service.wsdl setempat masih boleh menyebabkan SoapClient mengambil dokumen jauh semasa pembinaan. Menjadikan fail pertama setempat hanya membuang muat turun pertama itu:

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

Mulakan pada pengambilan pertama yang gagal, sebelum panggilan perniagaan SOAP pertama. Senaraikan setiap import WSDL dan setiap schema location, termasuk dokumen yang mereka rujuk seterusnya. Kekalkan URL atau laluan asas yang digunakan untuk menyelesaikan setiap rujukan relatif. Asingkan hos dalaman daripada sumber yang benar-benar memerlukan proksi luaran.

proksi SoapClient yang eksplisit boleh menghantar schema dalaman melalui perantara dengan pandangan DNS atau dasar akses yang berbeza. Pemboleh ubah no_proxy pada peringkat proses tidak membuktikan laluan pemuatan ini membacanya. Gunakan pilihan yang didokumenkan untuk versi PHP anda; menamakan pilihan sempena pemboleh ubah persekitaran tidak mencipta pemilih setiap import.

Untuk menggunakan definisi sepenuhnya secara setempat, dapatkan versi yang diluluskan bagi keseluruhan set kebergantungan, kemas kini lokasi import yang berkenaan kepada bundel setempat dan kekalkan asas laluan relatifnya. Versikan dokumen itu bersama-sama supaya WSDL akar baharu tidak menggunakan jenis yang lapuk.

Jangan ubah pengecam namespace. Ia mungkin kelihatan seperti URL, tetapi ia mengenal pasti kosa kata schema dan bukannya memberitahu pemuat dari mana hendak mengambil fail. Menggantikannya boleh mengubah kontrak perkhidmatan.

Uji semula pembinaan dengan keadaan cache direkodkan: definisi yang dicache boleh menyembunyikan kebergantungan yang hilang pada satu mesin. Penggantian URL perkhidmatan terpakai pada peringkat kemudian, dan __doRequest() tersuai mengendalikan pertukaran SOAP; kedua-duanya tidak boleh diandaikan menulis semula atau memintas semua muat turun schema semasa pembinaan.

Artikel berkaitan