किस मामले में हमें इस कमांड को चलाने की आवश्यकता है magento setup:di:compile
?
pub/static
किस मामले में हमें इस कमांड को चलाने की आवश्यकता है magento setup:di:compile
?
pub/static
जवाबों:
तैनाती के दौरान (यानी जब उत्पादन मोड में एक प्रणाली में परिवर्तन किए गए थे)
ध्यान दें कि उत्पादन मोड (संस्करण 2.0.5 और पूर्ववर्ती) में आपको "मल्टी-टेनेंट" संकलन का उपयोग करना होगा। 2.0.6 और बाद में तय किया गया।
bin/magento setup:di:compile-multi-tenant
देखें: http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-compiler.html
आप विकास मोड में संकलन का उपयोग भी कर सकते हैं, जिससे साइट को गति मिलनी चाहिए, लेकिन दूसरी ओर यह विकास को धीमा कर देता है, क्योंकि आपको bin/magento setup:di:compile
हर उस समय चलाने की आवश्यकता होगी, जिस पर आपने निर्भरता (कंस्ट्रक्टर पैरामीटर) या मौजूदा कक्षाओं की परिवर्तित निर्भरता के साथ नई कक्षाएं जोड़ी हों ।
यह वैकल्पिक है, और यह शायद एक अच्छा विचार नहीं है। यदि आप पहले से ही अपने विकास के वातावरण में संकलन चलाते हैं, तो var/di
इसे अक्षम करने के लिए फ़ाइलों को हटा दें।
var/generation
?
Action
परीक्षण करने के लिए बनाया है । - पेज लोड किया, त्रुटि। - हटाए गए di
और generation
फ़ोल्डर, पुनः लोड किए गए, काम करते हैं। - नई निर्भरता जोड़ें, पृष्ठ पुनः लोड करें, त्रुटि। हालाँकि कोई भी di
फ़ोल्डर उत्पन्न नहीं होता है। - generation
फिर से हटाएं , पुनः लोड करें, काम करता है। निष्कर्ष: निर्भरता जोड़ने के बाद जेनरेशन फ़ोल्डर को हटा दें और आपको चलाना नहीं होगा setup:di:compile
। अगर कोई और इस बात की पुष्टि कर सकता है, तो वह बहुत बढ़िया होगा।
एक अन्य उत्तर पर मेरी टिप्पणी के अनुसार:
पृष्ठ को पुनः लोड करने से पहलेsetup:di:compile
आप केवल var/di
और var/generation
फ़ोल्डरों को हटाकर एक चित्रण जोड़ने के बाद हर बार कमांड चलाने से बच सकते हैं ।
अपने स्वयं के परीक्षण से, Magento var/generation
फ़ोल्डर को फिर से बनाएगा , लेकिन var/di
फ़ोल्डर setup:di:compile
को फिर से चलाने तक नहीं । इसका मतलब है कि आपके पास var/generation
हटाने के लिए केवल फ़ोल्डर होना चाहिए ।
मजेदार रूप से पर्याप्त, यह भी साथ काम करता है pub/static/*
और setup:static-content:deploy
। ऐसा इसलिए है क्योंकि मैगेंटो को सीएलआई के बजाए स्टैटिक कंटेंट को पेज रीलोड द्वारा बनाया गया है, तो जरूरी फाइलों के लिए सिम्लिंक लगता है।
हमारे कार्यालय के लोगों को मैक के लिए डॉकर का उपयोग करते हुए उपरोक्त आदेशों को चलाने में समस्या हो रही थी। फ़ाइल प्रसंस्करण अभी बहुत धीमा था। उपरोक्त चरणों का उपयोग करके, विकास बहुत तेज होना चाहिए।
यह ध्यान रखना सबसे अच्छा है कि उत्पादन या डिफ़ॉल्ट मोड में यह काम नहीं करेगा। यह केवल विकास के लिए है। जैसा कि फैबियन शेंगलर ने उल्लेख किया है, प्रारंभिक पृष्ठ पुनः लोड सामान्य से धीमा होगा, लेकिन रनिंग setup:static-content:deploy
या `सेटअप: दी: संकलन के रूप में धीमा नहीं होना चाहिए ।
संदर्भ के लिए, मैं संस्करण 2.1.5 चला रहा हूं ।
एलन स्टॉर्म के ब्लॉग से लिया गया ।
निर्भरता इंजेक्शन संकलन
शुरू करने के लिए, हमें उस समस्या को समझाना चाहिए जिसे ये कमांड हल करने की कोशिश कर रहे हैं। जब आप उत्पादन के लिए एक Magento 2 प्रणाली जहाज करते हैं, तो आपको निम्नलिखित कमांड चलाने की आवश्यकता होती है
php bin/magento setup:di:compile
यह कमांड आपके सिस्टम में कोड के माध्यम से स्कैन करता है और कई चीजों को प्री-जेनरेट करता है (जो ज्यादातर ऑब्जेक्ट मैनेजर सिस्टम और डिपेंडेंसी इंजेक्शन से संबंधित होती हैं) जब आप डेवलपर मोड में चल रहे होते हैं तो Magento डायनामिक लोड करता है। यह प्रदर्शन और सुरक्षा दोनों है, और इस पर पूरी तरह से चर्चा करना इस लेख के दायरे से परे है।