ในphp_info()
ตำแหน่งที่เก็บแคช WSDL ( /tmp
) แต่ฉันไม่จำเป็นต้องรู้ว่าการลบไฟล์ทั้งหมดที่เริ่มต้นด้วย WSDL นั้นปลอดภัยหรือไม่
ใช่ฉันควรจะสามารถลบทุกอย่างได้/tmp
แต่ฉันไม่รู้ว่าจะมีผลอะไรอีกถ้าฉันลบไฟล์ 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) );
ini_set('soap.wsdl_cache_ttl', 1);
และปล่อยให้นั่งเป็นเวลาหนึ่งชั่วโมง - พบได้ที่นี่: stackoverflow.com/questions/323561/…
ลบwsdl*
ไฟล์ทั้งหมดใน/tmp
โฟลเดอร์ของคุณบนเซิร์ฟเวอร์
ไฟล์ WSDL ถูกแคชในตำแหน่งเริ่มต้นของคุณสำหรับไฟล์แคชทั้งหมดที่กำหนดใน php.ini ตำแหน่งเดียวกับไฟล์เซสชันของคุณ
หากคุณปรับใช้โค้ดแล้วหรือไม่สามารถเปลี่ยนแปลงการกำหนดค่าใด ๆ คุณสามารถลบไฟล์ temp ทั้งหมดออกจาก wsdl:
rm /tmp/wsdl-*
ขอแนะนำให้ใช้ cache-buster ใน wsdl url
ในแอพของเราเราใช้ SVN Revision id ใน wsdl url เพื่อให้ไคลเอนต์รู้ทันทีถึงการเปลี่ยนแปลงโครงสร้าง สิ่งนี้ใช้ได้กับแอพของเราเพราะทุกครั้งที่เราเปลี่ยนฝั่งเซิร์ฟเวอร์เราจำเป็นต้องปรับไคลเอนต์ให้สอดคล้องกันด้วย
$client = new SoapClient('http://somewhere.com/?wsdl&rev=$Revision$');
ต้องกำหนดค่า svn ให้ถูกต้อง ไม่ได้อยู่ในที่เก็บทั้งหมดซึ่งถูกเปิดใช้งานโดยค่าเริ่มต้น
ในกรณีที่คุณไม่รับผิดชอบต่อส่วนประกอบทั้งสอง (เซิร์ฟเวอร์ไคลเอนต์) หรือคุณไม่ได้ใช้ SVN คุณอาจพบตัวบ่งชี้อื่นที่สามารถใช้เป็นตัวจัดการแคชใน URL wsdl
ด้วยเหตุผลของเอกสาร:
ตอนนี้ (2014) สังเกตว่าจากแนวทางที่มีคุณค่าและถูกต้องทั้งหมดนี้มีเพียงแนวทางเดียวเท่านั้นที่ประสบความสำเร็จ ฉันได้เพิ่มฟังก์ชันให้กับ WSDL บนเซิร์ฟเวอร์แล้วและไคลเอนต์ไม่รู้จักฟังก์ชันใหม่
WSDL_CACHE_NONE
พารามิเตอร์ไม่ได้ช่วยอะไรsoap.wsdl_cache_enabled
เป็น PHP 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