क्या आपने डेटा एक्सेस लेयर के लिए ओआरएम का उपयोग किया था? मुझे पता है कि सिद्धांत एक माइग्रेशन एपीआई के साथ आता है जो संस्करण स्विच अप और डाउन (नए संस्करण के साथ कुछ गलत होने पर) की अनुमति देता है।
किसी भी ढांचे या ओआरएम विचार के बाहर, एक तेज स्क्रिप्ट मंदी को कम करेगी (या प्रक्रिया बहुत लंबी होने पर डाउनटाइम)।
मेरी राय के लिए, मैं कम से कम इंटरप्टशन समय प्राप्त करने के बजाय, एक दृश्य पृष्ठ के साथ 30sec वेबसाइट पहुंच बाधा को पसंद करना चाहता हूं लेकिन दृश्यमान बग या कोई प्रदर्शन नहीं कर रहा हूं। यदि बाधाओं का समय मायने रखता है, तो रात में या कम यातायात के दौरान यह सबसे अच्छा कर रहा है।
यह सब एक स्क्रिप्ट में किया जा सकता है (या कम से कम एक commande लाइन द्वारा शुरू की), जब हम इस तरह के स्क्रिप्ट हम एक खोल स्क्रिप्ट में शामिल करने के लिए चाहते हैं:
- स्टैंडबाय में आवेदन डाल (अस्थायी स्थिर पृष्ठ): आप .htaccess रीडायरेक्ट या जो भी आपके ऐप/सर्वर पर्यावरण पर लागू हो सकते हैं।
- स्रोत कोड और संपत्तियों के उन्नयन के लिए svn udpate (या स्विच)
- खाली कैश, अस्थायी फ़ाइलों को साफ करना आदि।
- उत्पन्न वर्गों के पुनर्निर्माण (सिम्फोनी विशिष्ट)
- ALTER/CREATE TABLE querys साथ उन्नयन डीबी संरचना
- यदि आवश्यक हो तो, पुरानी संरचना से नई करने के लिए डेटा को स्थानांतरित: क्या आप संरचना पर बदल के आधार पर, यह पहले डेटा प्राप्त करने में आवश्यकता हो सकती है डीबी संरचना में परिवर्तन, या टीएमपी टेबल का उपयोग करें।
- यदि सब ठीक हो गए, तो अस्थायी पृष्ठ हटा दें। अपग्रेड
- अगर कुछ गलत हो गया तो ऑपरेटर को एक लाल संदेश प्रदर्शित करता है ताकि यह देख सके कि क्या हुआ, इसे ठीक करने का प्रयास करें और फिर प्रतीक्षा पृष्ठ को हाथ से हटा दें।
स्क्रिप्ट प्रत्येक चरण पर जांच करते हैं और पहली बार एक त्रुटि को रोकने, और यह अत्यधिक शब्द (लेकिन संक्षिप्त) के बारे में क्या यह सभी कदम पर करता है, इस प्रकार आप एप्लिकेशन तेजी से अगर कुछ गलत हो गया है करने के लिए ठीक कर सकते हैं होना चाहिए । सबसे अच्छा एक पुनर्प्राप्ति योग्य स्क्रिप्ट होगी (चरण 2 में त्रुटि - रोक प्रक्रिया - मैन्युअल फिक्स - चरण 3 पर पुनर्प्राप्त), मैंने इसे इस तरह लागू करने के लिए समय नहीं लिया।
यदि बहुत अच्छी तरह से काम करता है लेकिन इस तरह की स्क्रिप्ट को एक परीक्षण पर, उत्पादन के लिए जितना संभव हो उतना निकटतम परीक्षण किया जाना चाहिए। आम तौर पर हम स्थानीय रूप से ऐसी स्क्रिप्ट विकसित करते हैं, और उत्पादन प्लेटफॉर्म पर केवल उसी प्लेटफॉर्म पर परीक्षण करते हैं (केवल अलग पथ और डीबी)
यदि प्रतीक्षा पृष्ठ कोई विकल्प नहीं है, तो आप जा सकते हैं लेकिन आपको डेटा सुनिश्चित करने की आवश्यकता है और उपयोगकर्ता सत्र अखंडता। उदाहरण के तौर पर, अपग्रेड/डेटा ट्रांसफर के दौरान टेबल पर LOCK का उपयोग करें और संशोधित फ़ाइलों पर विशेष लॉक का उपयोग करें (एसवीएन मुझे लगता है)
अन्य बेहतर समाधान हो सकते हैं, लेकिन मूल रूप से मैं इसका उपयोग करता हूं और यह हमारे लिए काम करता है। बड़ी कमी यह है कि प्रत्येक प्रमुख रिलीज पर इस तरह की लिपि को फिर से लिखा जाना था, इससे मुझे ऐसा करने के लिए अन्य विकल्पों की खोज करने की उत्तेजना होती है, लेकिन कौन सा ??? अगर कोई यहां बेहतर और सरल विकल्प था तो मुझे खुशी होगी।
आप एक ही समय में अपने डेटाबेस और कोड में अपग्रेड रोल करने का समाधान ढूंढ रहे हैं? क्या आपके पास कैशिंग जैसी कुछ "जटिल" है? यदि आप अपनी संपूर्ण साइट को "रखरखाव मोड" में सेट करते हैं, तो वे वर्तमान में लॉग इन नहीं कर सकते हैं - क्या आप अपने SQL ALTER कथन चलाने और एक ही समय में कोड अपलोड करने में सक्षम होंगे? हम कितने आरपीएस बात कर रहे हैं? क्या कोई सुबह के घंटों में कुछ सेकंड का डाउन टाइम नोटिस करेगा? – jlindenbaum
उमूम, मुझे तुम्हारा बिंदु मिल गया ... ... मुझे लगता है कि मैं रखरखाव के लिए सर्वर घंटे का प्रबंध कर सकता हूं – Tattat