2016-02-09 6 views
6

मेरे पास एक सिम्फनी 2 वेबसाइट है जिसे मैं उत्पादन में परीक्षण कर रहा हूं। मैं आगे बढ़ गया और अपने कैश को साफ़ कर दिया क्योंकि मैंने और अधिक बदलाव किए हैं, हालांकि एक छोटी सी समस्या है:उत्पादन में सिम्फनी के कैश को संभालना

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

बाद में क्या होता है, कैश बनाया जाता है, लेकिन इसका केवल एक हिस्सा होता है। सिम्फनी सोचता है कि कैश पूरी तरह से बनाया गया है, और इसे और बनाने की कोशिश किए बिना चलता है, लेकिन यह आधा निर्मित कैश पर चलता है। हटाना प्रक्रिया थोड़ा लंबा (~ 15 सेकंड) है, इसलिए इस समय सीमा में किसी को भी वेबसाइट तक पहुंचने से कैश बनाने की कोशिश नहीं करनी चाहिए।

या तो, या कैश पूरी तरह से बनाया गया है, यह पुराने कैश को ओवरराइट करता है, और सिस्टम इन नई फ़ाइलों को पुराने लोगों के रूप में मानता है, उनमें से कुछ हिस्सों को हटा देता है और कुछ अन्य रहते हैं। पूरी तरह से यकीन नहीं है, मुझे यकीन नहीं है कि यह कैसे जांचें।

उदाहरण के लिए, एक त्रुटियों कि मैं चाहता हूँ की

The directory "D:\xampp\htdocs\med-app\app\app\cache\dev/jms_diextra/metadata" does not exist. 

है मुझे लगता है कि बंडल का उपयोग नहीं होता अगर मैं सिद्धांत से दूसरे कैश समस्या मिल चाहते हैं। जब तक मैं वेबसाइट तक पहुंचने के बिना फिर से कैश को हटा देता हूं तब तक यह प्रत्येक वेबसाइट एक्सेस पर दिखाई देता है। यह पूरी तरह से वेबसाइट तक पहुंच को अवरुद्ध करता है और इसे गैर-कार्यात्मक बनाता है।

इसके अलावा, गर्मजोशी के बारे में क्या? इसमें थोड़ी देर लगती है। यदि कैश गर्म हो रहा है तो कोई वेबसाइट पर पहुंचता है तो क्या होगा? क्या यह एक संघर्ष भी नहीं बनाता है?

इस समस्या को कैसे संभालें? क्या मुझे अपाचे सेवा, स्पष्ट और गर्म कैश को बंद करने की आवश्यकता है और फिर अपाचे को पुनरारंभ करें? यह उत्पादन में वेबसाइट के साथ कैसे संभाला जाता है?

EDIT कुछ दिलचस्प जो मैंने खोजा है। बग तब होता है जब मैं cache/prod फ़ोल्डर हटा देता हूं। अगर मैं फोल्डर को हटाए बिना फ़ोल्डर की सामग्री हटा देता हूं, ऐसा लगता है कि बग नहीं होता है। मुझे आश्चर्य है क्योंकि।

+0

मैं 'सूडो आरएम-आरएफ ऐप/कैश/*' के साथ कैश को हटाना पसंद करता हूं, मुझे लगता है कि आप उस समय को कम कर सकते हैं जब यह बहुत अधिक –

+0

ले जाएगा क्योंकि आप मैन्युअल रूप से कैश साफ़ कर रहे हैं तो रीफ्रेशिंग को मैन्युअल रूप से करने की आवश्यकता है, अन्यथा @johnmith टिप्पणियों को कम समय पर स्वचालित रीफ्रेश बनाने या इसे पूरी तरह अक्षम करने के लिए देखें। – Anil

+0

मैं 'आरएम' का उपयोग नहीं कर सकता क्योंकि यह विंडोज़ पर xampp के साथ है। –

उत्तर

4

आमतौर पर वेबसाइट को रखरखाव मोड में लॉक करने के लिए अच्छा अभ्यास है यदि आप अपडेट कर रहे हैं, या उत्पादन में किसी अन्य कारण के लिए कैश साफ़ कर रहे हैं। कभी-कभी वेब होस्टिंग सेवाओं के पास यह विकल्प आपके लिए संभालने का विकल्प होता है, या कमांड लाइन से आसानी से रखरखाव को संभालने के लिए nice bundle होता है।

इस तरह आप कैश को सुरक्षित रूप से हटा सकते हैं और सुनिश्चित कर सकते हैं कि कोई भी पृष्ठ पर नहीं जाता है और कैश को गलत तरीके से पुनर्निर्माण करता है।

+0

बनाने का अधिकार नहीं है, मुझे लगता है कि लेक्सिक से एक रखरखाव बंडल भी है। क्या आप भी एक की सिफारिश करेंगे? वैसे भी, इस बंडल द्वारा उत्पन्न रखरखाव पृष्ठों तक पहुंचने से कैश से लिखने या पढ़ने की कोशिश की जाती है? चूंकि वह अभी भी समस्याओं का समाधान नहीं करेगा। –

+0

मुझे लेक्सिक के बंडल के साथ अनुभव नहीं है। 'CorleyMaintenanceBundle' में दो मोड, हार्ड और मुलायम हैं। आप हार्ड लॉक की तलाश में हैं, जो अपाचे/एनजिनक्स स्तर पर काम करता है। सॉफ्ट लॉक अभी भी कैश तक पहुंच जाएगा। –

3

आमतौर पर यदि आपको सिम्फनी कैश को साफ़ करना है तो इसका मतलब है कि आप एक नए संस्करण में अपडेट कर रहे हैं - इसलिए न केवल आपको कैश साफ़ करना है, लेकिन आपको शायद संपत्ति को डंप करना और अन्य कार्य करना होगा। इस मामले में मैंने जो कुछ किया है, वह बहुत अच्छा काम करता है, प्रत्येक उत्पादन रिलीज को अपने स्वयं के संस्करण के रूप में अपने स्वयं के फ़ोल्डर के रूप में मानना ​​है - इसलिए जब आप एक नया संस्करण स्थापित करते हैं तो आप इसे वेबसर्वर से अनकनेक्ट करते हैं, और फिर बस बदलते हैं आपका वेबसर्वर जब आप पूरा कर लें तो नए संस्करण को इंगित करें। जोड़ा गया लाभ यह है कि यदि आप कुछ गड़बड़ करते हैं और रोलबैक करना चाहते हैं, तो आप तुरंत पिछले संस्करण पर तुरंत लिंक करें।

उदाहरण के लिए, मान लें कि आपका अपाचे config DocumentRoot है हमेशा एक विशिष्ट स्थान को इंगित: अब कहते हैं कि आपके पास

/var/www/mysite/web -> /var/www/versions/1.0/web 

:

DocumentRoot /var/www/mysite/web 

आप अपने नवीनतम संस्करण के लिए एक सिमलिंक कि जड़ होगा स्थापित करने के लिए अपनी साइट के संस्करण 1.1। आप बस /var/www/versions/1.1 लिए इसे स्थापित - कोड वहाँ कैश अद्यतन, आदि शब्दों में कहें, अपनी संपत्ति स्थापित करते हैं, तो बस सिमलिंक बदलने के लिए:

/var/www/mysite/web -> /var/www/versions/1.1/web 

अब अगर साइट बुरी तरह दुर्घटनाओं आप बस सिमलिंक वापस इंगित कर सकते हैं। यहां लाभ यह है कि आपकी साइट पर कोई डाउनटाइम नहीं है और यदि आपने कोई गलती की है तो रोलबैक करना आसान है। इस स्वचालित करने के लिए मैं एक bash स्क्रिप्ट कि एक नया संस्करण को स्थापित करता है और && के माध्यम से जुड़े आदेशों की एक श्रृंखला के साथ सिमलिंक अद्यतन करता है, इसलिए यदि स्थापित की एक कदम विफल रहता है, पूरे स्थापित विफल रहता है और आप संस्करण लीम्बो के बीच अटक नहीं कर रहे हैं का उपयोग करें।

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

+0

एचएम, मुझे आश्चर्य है कि यह कैपिफोनी के साथ भी किया जा सकता है। क्या सर्वर बहुत फूला हुआ नहीं है, यद्यपि? आपको सभी 'वेब' छवियों और प्रत्येक संस्करण के लिए अपलोड की प्रतिलिपि बनाना होगा। –

+0

हाँ कि निश्चित रूप से एक समस्या हो सकती है। मेरा मतलब है कि मेरी साइटें लगभग कोई छवियों का उपयोग नहीं करती हैं, इसलिए समग्र पदचिह्न वास्तव में छोटा है, और मैं पिछले दर्जनों संस्करणों या कुछ भी नहीं रखता, केवल हाल ही में 2 या 3। मुझे यकीन है कि कैपिफोनी एक अच्छा विकल्प होगा। .. तैनाती मेरी बात से कम है और मैं जितनी जल्दी हो सके इसे करने की कोशिश करता हूं ताकि मैं विकास पर ध्यान केंद्रित कर सकूं। –

संबंधित मुद्दे