दिलचस्प पोस्ट
जावा में ओवरराइड होने के बराबर और हैशोड होने पर किस मुद्दे पर विचार किया जाना चाहिए? मैं फॉर्म के क्लीन () विधि में अनुरोध ऑब्जेक्ट या अन्य वैरिएबल का उपयोग कैसे करूं? लगातार चलने / रोकना और जावा टिमर टास्क शुरू करना / शुरू करना? बाल राज्यों में कोणीय यूआई राउटर नेस्टेड स्टेट का हल डेटा प्रकार के साथ तालिका में स्तंभों की सूची प्राप्त करने के लिए SQL सर्वर क्वेरी, नल, और प्राथमिक कुंजी बाधाएं स्टोर खोलने के लिए इस्तेमाल किया जाने वाला मॉडल स्टोर बनाने के लिए इस्तेमाल किए जाने वाले किसी के साथ असंगत है sv3 के बाहर एक बटन से डी 3 में नोड पर क्लिक करना HTML और जावास्क्रिप्ट प्रदान करने के लिए पायथन लाइब्रेरी पर्यावरण.टिककाउंट बनाम दिनांकटाइम.अब कैसे पता कैसे एक मूल DLL फ़ाइल x64 या x 86 के रूप में संकलित किया गया है? node.js – gzip / deflate संपीड़न के साथ आसान http अनुरोध जावास्क्रिप्ट: स्ट्रिंग से एचटीएमएल टैग पट्टी कैसे करें? संस्करण नियंत्रण के तहत आईप्याथॉन नोटबुक का उपयोग करना Xcode: टेस्ट बनाम डेबग प्रीप्रोसेसर मैक्रोज़ पूर्णांक आवरण वर्ग और == ऑपरेटर – जहां व्यवहार निर्दिष्ट है?

एपीसी कैश प्रविष्टियों को कैसे साफ़ करें?

जब मैं साइट के एक नए संस्करण की तैनाती करता हूं, तो मुझे सभी एपीसी कैश प्रविष्टियों को साफ़ करना होगा। एपीसी.एफ़पीपी में सभी opcode कैश साफ़ करने के लिए एक बटन है, लेकिन मुझे सभी यूजर प्रविष्टियों, या सभी सिस्टम प्रविष्टियों या सभी प्रति-निर्देशिका प्रविष्टियां साफ़ करने के लिए बटन दिखाई नहीं देते हैं।

क्या कमांड लाइन के माध्यम से या किसी अन्य तरीके से सभी कैश प्रविष्टियां साफ़ करना संभव है?

वेब के समाधान से एकत्रित समाधान "एपीसी कैश प्रविष्टियों को कैसे साफ़ करें?"

आप PHP फ़ंक्शन apc_clear_cache उपयोग कर सकते हैं।

कॉलिंग apc_clear_cache() सिस्टम कैश साफ़ कर देगा और apc_clear_cache('user') को कॉल करने से उपयोगकर्ता कैश साफ़ हो जाएगा।

मुझे विश्वास नहीं है कि इन उत्तरों में से कोई भी वास्तव में कमांड लाइन से एपीसी कैश को साफ करने के लिए काम करता है। जैसा फ्रैंक किसान ने ऊपर टिप्पणी की है, सीएलआई अपाचे से अलग प्रक्रिया में चलता है

कमांड लाइन से समाशोधन के लिए मेरा समाधान एक स्क्रिप्ट लिखना था जो एपीसी क्लियरिंग स्क्रिप्ट की web निर्देशिका में प्रतिलिपि बनाता है और इसे एक्सेस करता है और फिर इसे हटाता है स्क्रिप्ट लोकलहोस्ट से एक्सेस करने के लिए प्रतिबंधित है

  1. apc_clear.php

    यह वह फाइल है जो स्क्रिप्ट वेब निर्देशिका, एक्सेस और हटाए जाने की प्रतियां करती है।

     <?php if (in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1'))) { apc_clear_cache(); apc_clear_cache('user'); apc_clear_cache('opcode'); echo json_encode(array('success' => true)); } else { die('SUPER TOP SECRET'); } 
  2. कैश क्लीयरिंग स्क्रिप्ट

    यह स्क्रिप्ट वेब निर्देशिका में apc_clear.php कॉपी करता है, इसे एक्सेस करता है, फिर इसे हटाता है यह एक सिम्फनी कार्य से दूर आधारित है। सिमफोनी संस्करण में, कॉप के सिमफोनी फॉर्म और अनलिंक के लिए कॉल किए जाते हैं, जो त्रुटियों को संभालते हैं। आप उन चेक को जोड़ना चाह सकते हैं जो वे सफल होते हैं।

     copy($apcPaths['data'], $apcPaths['web']); //'data' is a non web accessable directory $url = 'http://localhost/apc_clear.php'; //use domain name as necessary $result = json_decode(file_get_contents($url)); if (isset($result['success']) && $result['success']) { //handle success } else { //handle failure } unlink($apcPaths['web']); 

मुझे पता है कि यह सभी के लिए नहीं है: क्यों नहीं एक सुंदर अपाचे को पुनः आरंभ करें?

Centos / RedHat लिनक्स के मामले में उदाहरण के लिए:

 sudo service httpd graceful 

उबंटू:

 sudo service apache2 graceful 

यह दस्तावेज़ीकरण में नहीं बताया गया है, लेकिन opcode कैश को खाली करने के लिए आपको करना होगा:

 apc_clear_cache('opcode'); 

संपादित करें: यह केवल एपीसी के कुछ पुराने संस्करणों पर लागू होता है ..

कोई फर्क नहीं पड़ता कि आप किस संस्करण का उपयोग कर रहे हैं, आप php cli स्क्रिप्ट से mod_php या fastcgi एपीसी कैश को स्पष्ट नहीं कर सकते हैं क्योंकि सीएलआईटी एक अलग प्रक्रिया से mod_php या fastcgi के रूप में चलाएगा। आपको प्रक्रिया (या बाल प्रक्रिया) के भीतर से apc_clear_cache () को कॉल करना होगा, जिसे आप कैश के लिए साफ़ करना चाहते हैं। सरल php स्क्रिप्ट चलाने के लिए कर्ल का उपयोग करना एक ऐसा दृष्टिकोण है

यदि आप कमांड में एपीसी कैश खाली करना चाहते हैं: (sudo का उपयोग करें, अगर आपको इसकी आवश्यकता है)

 php -r "apc_clear_cache(); apc_clear_cache('user'); apc_clear_cache('opcode');" 

यदि आप एक एनजीआईएनएक्स / पीएचपी- एफपीएम स्टैक पर चल रहे हैं, तो आपका सर्वश्रेष्ठ शर्त शायद ही php-fpm को पुनः लोड करना है

service php-fpm reload (या जो भी आपके पुनः लोड कमांड आपके सिस्टम पर हो सकता है)

कमांड लाइन उपयोग के लिए एक और संभावना, अभी तक उल्लेख नहीं है, कर्ल का उपयोग करना है

अगर आप शेयर apc.php स्क्रिप्ट का उपयोग कर रहे हैं, तो यह सभी कैश प्रविष्टियों के लिए आपकी समस्या का समाधान नहीं करता है, लेकिन यह एक अनुकूलित स्क्रिप्ट या किसी दूसरी जगह पर डाल सकता है।

यह opcode कैश को साफ करता है:

 curl --user apc:$PASSWORD "http://www.example.com/apc.php?CC=1&OB=1&`date +%s`" 

उपयोगकर्ता कैश साफ़ करने के लिए OB पैरामीटर को 3 में बदलें:

 curl --user apc:$PASSWORD "http://www.example.com/apc.php?CC=1&OB=3&`date +%s`" 

एक स्क्रिप्ट में दोनों लाइनें रखें और इसे अपने पासवर्ड में $ PASSWORD के साथ कॉल करें।

यदि आप जेएसएन के माध्यम से परिणामों की निगरानी करना चाहते हैं, तो आप इस प्रकार की स्क्रिप्ट का उपयोग कर सकते हैं:

 <?php $result1 = apc_clear_cache(); $result2 = apc_clear_cache('user'); $result3 = apc_clear_cache('opcode'); $infos = apc_cache_info(); $infos['apc_clear_cache'] = $result1; $infos["apc_clear_cache('user')"] = $result2; $infos["apc_clear_cache('opcode')"] = $result3; $infos["success"] = $result1 && $result2 && $result3; header('Content-type: application/json'); echo json_encode($infos); 

जैसा कि दूसरे उत्तर में बताया गया है, इस स्क्रिप्ट को http या कर्ल के माध्यम से बुलाया जाएगा और यदि आपको अपने आवेदन की वेब रूट में उजागर किया गया है तो आपको सुरक्षित करना होगा। (आईपी, टोकन द्वारा …)

apc_clear_cache () केवल एक ही php SAPI पर काम करता है जो कि आप चाहते हैं कि आप कैशे साफ़ हो। यदि आपके पास PHP-FPM है और apc कैश को खाली करना चाहते हैं, तो आप इसे एक php स्क्रिप्ट के माध्यम से करते हैं, कमांड लाइन नहीं, क्योंकि दो कैश अलग हैं

मैंने कैशटूल लिखा है, एक कमांड लाइन टूल जो बिल्कुल इस समस्या का समाधान करता है और एक कमांड के साथ आप कमांडलाइन से अपना PHP-FPM APC कैश साफ़ कर सकते हैं (यह आपके लिए php-fpm से कनेक्ट करता है, और एपीसी फ़ंक्शन निष्पादित करता है)

यह opcache के लिए भी काम करता है

देखें कि यह कैसे काम करता है: http://gordalina.github.io/cachetool/

एपीसी की स्थिरता अपने इंटरफेस में कैश साफ़ करने का विकल्प है। इन प्रविष्टियों को साफ करने के लिए आपको एपीसी इंटरफ़ेस में प्रवेश करना होगा।

एपीसी को apc.php फ़ाइल में उपयोगकर्ता नाम और पासवर्ड सेट करने का विकल्प हो रहा है।

यहां छवि विवरण दर्ज करें

अगर आप फ़ुटफॉर्म को यूबेंट्यू के तहत चलाते हैं, तो नीचे दिए गए कोड को चलाने की जरूरत है (12 और 14 पर चेक)

 service php5-fpm reload 

एपीसी दस्तावेज़ में परिभाषित के रूप में:

कैश रन को साफ़ करने के लिए:

 php -r 'function_exists("apc_clear_cache") ? apc_clear_cache() : null;' 

apc.ini

apc.stat = "1" एपीसी को प्रत्येक अनुरोध पर स्क्रिप्ट (चेक) को निर्धारित करने के लिए मजबूर करेगी कि यह संशोधित किया गया है या नहीं। यदि इसे संशोधित किया गया है तो वह नया संस्करण पुनः कंपाइल और कैश करेगा।

यदि यह सेटिंग बंद है, तो एपीसी जांच नहीं करेगा, जिसका मतलब है कि एपीसी फाइल को फिर से जांचने के लिए मजबूर करने के लिए, वेब सर्वर को पुनरारंभ करना होगा या कैश को मैन्युअल रूप से साफ़ करना होगा। ध्यान दें कि FastCGI वेब सर्वर कॉन्फ़िगरेशन पुनरारंभ पर कैश को साफ़ नहीं कर सकता है। एक प्रोडक्शन सर्वर पर जहां स्क्रिप्ट को शायद ही कभी बदलते हैं, एक अक्षम प्रदर्शन आंकड़ा द्वारा अक्षम प्रदर्शन प्राप्त किया जा सकता है।

नए एपीसी एडमिन इंटरफेस में उपयोगकर्ता कैश और ओपोड कैश को जोड़ने / साफ़ करने के विकल्प हैं, एक दिलचस्प कार्यक्षमता को जोड़ने / रीफ्रेश करना / निर्देशिका को opcode कैश से हटा देना है

एपीसी व्यवस्थापक दस्तावेज़ीकरण

यहां छवि विवरण दर्ज करें

मेरे लिए एक अच्छा समाधान केवल उपयोग किए जाने के बाद पुरानी उपयोगकर्ता कैश का उपयोग नहीं करना था।

यदि आप प्रत्येक कुंजी के लिए उपसर्ग जोड़ते हैं तो आप कैश प्रविष्टियों के डेटा संरचना को बदलकर उपसर्ग बदल सकते हैं। इससे आपको तैनाती पर निम्नलिखित व्यवहार प्राप्त करने में मदद मिलेगी:

  1. केवल अद्यतित संरचनाओं को लागू करने के बाद पुराने कैश प्रविष्टियों का उपयोग न करें
  2. अपने पृष्ठ को धीमा न करने के लिए तैनाती पर पूरे कैश को साफ न करें
  3. आपकी तैनात को वापस करने के बाद कुछ पुरानी कैश की गई प्रविष्टियों का पुन: उपयोग किया जा सकता है (यदि प्रविष्टियां पहले से ही स्वचालित रूप से निकाल नहीं ली गई थीं)
  4. एपीसी समाप्त होने के बाद पुराने कैश प्रविष्टियों को निकाल देगा या लापता कैश स्पेस पर

यह केवल उपयोगकर्ता कैश के लिए संभव है

APC.php फ़ाइल बनाएं

 foreach(array('user','opcode','') as $v ){ apc_clear_cache($v); } 

इसे अपने ब्राउज़र से चलाएं

सिम्फनी के लिए मेरा कार्य-आस-पास उसी सर्वर पर उदाहरणों की लूट होने का निर्माण:

चरण 1. ट्रिगर बनाएं या फ़ाइल ध्वज सेट करने के लिए कुछ करें (जैसे सिम्फनी कमांड) तो marker file बनाएं ..

 file_put_contents('clearAPCU','yes sir i can buggy') 

चरण 2. प्रारंभ सूचकांक फ़ाइल में समाशोधन कोड जोड़ने पर और marker file हटा दें।

 if(file_exists('clearAPCU')){ apcu_clear_cache(); unlink('clearAPCU'); } 

चरण 2. भागो एप्लिकेशन

हमें एपीसी और सिम्प्लिंक से फाइलों में सिमुलेशन के लिए एक समस्या थी – ऐसा लगता है कि फाइलों में बदलावों को अनदेखा करना किसी भी तरह फाइल पर टच का प्रदर्शन करने में मदद मिलती है मैं यह नहीं बता सकता कि फाइल को बदलने और छूने में क्या अंतर है, लेकिन किसी तरह यह आवश्यक था …