PHP में आप एक WSDL कैश कैसे साफ़ कर सकते हैं?


91

के माध्यम से में php_info()जहां डबल्यूएसडीएल कैश आयोजित किया जाता है ( /tmp), लेकिन मैं अगर यह जरूरी डबल्यूएसडीएल के साथ शुरू सभी फाइलों को नष्ट करने के लिए सुरक्षित है पता नहीं है।

हां, मुझे हर चीज को सिर्फ डिलीट करने में सक्षम होना चाहिए/tmp , लेकिन मुझे नहीं पता कि अगर मैं किसी भी डब्ल्यूएसडीएल फाइल को डिलीट कर दूं तो इसका और क्या असर हो सकता है।

जवाबों:


200

आप WSDL कैश फ़ाइलों को सुरक्षित रूप से हटा सकते हैं। यदि आप भविष्य के कैशिंग को रोकना चाहते हैं, तो उपयोग करें:

ini_set("soap.wsdl_cache_enabled", 0);

या गतिशील रूप से:

$client = new SoapClient('http://somewhere.com/?wsdl', array('cache_wsdl' => WSDL_CACHE_NONE) );

31
मेरा मानना ​​है कि एक 0 को हार्डकोड करने के बजाय, SoapClient का उपयोग करते समय, यह अनुशंसा की जाती है कि आप परिभाषित निरंतर WSDL_CACHE_NONE का उपयोग करें। Php.net/manual/en/soapclient.soapclient.php पर
Dan Burton

वैसे भी मैं कैचिंग को काल्पनिकता के रूप में बता सकता हूं, लेकिन कुछ समय के लिए सभी कैश को कैसे अमान्य करते हैं? हम इन चीजों को .net आदि में आसानी से कर सकते हैं
कामरान शहीद

यह समाधान कैश को साफ करता है लेकिन यह प्रदर्शन के लिए एक व्यापार बंद है।
नबील अरशद

5
वास्तव में कैश को साफ़ करने के लिए, भले ही / tmp फ़ाइलों को हटा दिया गया था, फिर भी मैं wsdl कैश समस्याएँ प्राप्त कर रहा था, जब तक मैंने इस सेटिंग का उपयोग नहीं किया ini_set('soap.wsdl_cache_ttl', 1);और इसे एक घंटे तक बैठने दिया - यहां पाया गया: stackoverflow.com/questions/323561/ ...
यहोशू फ्रिके

27

wsdl*अपने /tmpफोल्डर की सभी फाइलों को सर्वर पर निकालें ।

WSDL फाइलें php.ini में परिभाषित सभी कैश फ़ाइलों के लिए आपके डिफ़ॉल्ट स्थान पर कैश की जाती हैं। अपने सत्र फ़ाइलों के रूप में एक ही स्थान।


क्या आप मुझे बता सकते हैं कि यह tmp फ़ोल्डर कहाँ रहता है?
कामरान शाहिद

3
यह / tmp पर है। किसी भिन्न स्थान का उपयोग करने के लिए php सेट किया जा सकता है, आप इसे php -i करके पता लगा सकते हैं grep wsdl_cache_dir
Siliconrockstar

यह मेरे लिए था। नोट: मैं डॉकटर-कंपोज़ का उपयोग कर रहा था , इसलिए मुझे एक नया डॉक-कंपोज़ करने से पहले docker-compose rm <कंटेनर> चलाना था ।
15:32 बजे

आप wsdl कैश के लिए "php -i | grep साबुनवार्डड्ल_केच_डिर" के साथ फ़ोल्डर का पता लगा सकते हैं
डैनियल मूलर

13

यदि आप पहले से ही कोड तैनात करते हैं या कोई कॉन्फ़िगरेशन नहीं बदल सकते हैं, तो आप wsdl से सभी अस्थायी फ़ाइलों को हटा सकते हैं:

rm /tmp/wsdl-*

2
यह भी है कि मैं क्या कर रहा हूँ, निश्चित रूप से अगर आप WSDL_CACHE_DISK का उपयोग कर रहे हैं
carlosvini

विंडोज पर यह c: \ tmp
b3wii

12

मैं wsdl url में कैश-बस्टर का उपयोग करने की सलाह देता हूं।

हमारे ऐप्स में हम wsdl url में SVN रिवीजन आईडी का उपयोग करते हैं ताकि क्लाइंट तुरंत संरचनाओं को बदलने के बारे में जान सके। यह हमारे ऐप पर काम करता है क्योंकि, हर बार जब हम सर्वर-साइड बदलते हैं, तो हमें क्लाइंट को उसके अनुसार समायोजित करने की भी आवश्यकता होती है।

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

इसके लिए svn को ठीक से कॉन्फ़िगर करने की आवश्यकता है। सभी रिपॉजिटरी पर नहीं यह डिफ़ॉल्ट रूप से सक्षम है।

यदि आप दोनों घटकों (सर्वर, क्लाइंट) के लिए ज़िम्मेदार नहीं हैं या आप एसवीएन का उपयोग नहीं करते हैं, तो आपको एक और संकेतक मिल सकता है जिसे आपके wsdl url में कैश-बस्टर के रूप में उपयोग किया जा सकता है।


7
यदि कोई अन्य पैरामीटर मौजूद है, तो कुछ SOAP सर्वर WSDL की सेवा नहीं देगा।
राफेल रियाल

4

सिर्फ प्रलेखन के कारण:

मैंने अब (2014) देखा कि इन सभी मूल्यवान और सही दृष्टिकोणों से केवल एक ही सफल था। मैंने सर्वर पर डब्लूएसडीएल में एक फ़ंक्शन जोड़ा है, और क्लाइंट नए फ़ंक्शन को नहीं पहचान रहा था।

  • WSDL_CACHE_NONEमापदंडों में जोड़ने से कोई मदद नहीं मिली।
  • कैश-बस्टर जोड़ने से कोई मदद नहीं मिली।
  • soap.wsdl_cache_enabledPHP ini में सेट करने से मदद मिली।

मैं अब अनिश्चित हूं अगर यह तीनों का संयोजन है, या यदि कुछ सुविधाओं को बुरी तरह से लागू किया जाता है, तो वे बेतरतीब ढंग से बेकार हो सकते हैं, या यदि सुविधाओं के कुछ पदानुक्रम समझ में नहीं आते हैं।

तो आखिरकार, उम्मीद करें कि आपको इन जैसी समस्याओं को हल करने के लिए तीनों की जांच करनी होगी।


FYI ini_set ("साबुनवार्डड्ल_चेचे_अनक्षम", WSDL_CACHE_NONE); मेरे लिए ठीक काम किया
hobailey

0

अपनी 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.