असल में मुझे symfony2 और doctrine2 के संयोजन के साथ बहुत परेशानी है। मुझे विशाल डेटासेट (लगभग 2-3 मिलियन लिखना और पढ़ना) से निपटना होगा और स्मृति से बाहर निकलने से बचने के लिए बहुत सारे प्रयास करना होगा।मेमोरी लीक सिम्फनी 2 सिद्धांत 2/स्मृति सीमा से अधिक
2 मुख्य बिंदु बाहर figgured, कि "रिसाव" ing स्मृति (वे वास्तव में नहीं वास्तव में लीक कर रहे हैं, लेकिन आवंटन एक बहुत)
Entitymanager इकाई भंडारण (मुझे नहीं इस का असली नाम पता एक) ऐसा लगता है जैसे कि यह सब कार्रवाई की entites रहता है और आप
$entityManager->clear()
सिद्धांत QueryCache के साथ इस भंडारण नियमित रूप से साफ़ करने के लिए है - यह सब इस्तेमाल किया प्रश्नों कैश और केवल विन्यास मैंने पाया था कि तुम क्या तय करने में सक्षम हैं कैश की तरह आप हमें चाहते हैं ई। मुझे एक वैश्विक अक्षम नहीं मिला और न ही प्रत्येक क्वेरी को अक्षम करने के लिए एक उपयोगी ध्वज मिला। तो आम तौर पर समारोह के साथ हर क्वेरी ऑब्जेक्ट के लिए इसे अक्षम
$qb = $repository->createQueryBuilder($a); $query = $qb->getQuery(); $query->useQueryCache(false); $query->execute();
तो .. सब मैं अभी पता लगा thats .. मेरे प्रश्न हैं:
वहाँ एक आसान तरीका अस्वीकार करने के लिए है Entitymanagerstorage से कुछ वस्तुओं? क्या इकाई प्रबंधक में क्वेरी कैश उपयोग सेट करने का कोई तरीका है? क्या मैं इस कैशिंग व्यवहार को सिम्फनी सिद्धांत सिद्धांत में कभी भी कॉन्फ़िगर कर सकता हूं? अगर कुछ एक .. मेरे लिए कुछ अच्छा सुझाव दिए गए है अन्यथा इस सकता है कुछ रूकी मदद की
बहुत बढ़िया नहीं होगा ..
cya
डी 2 ओआरएम परत वास्तव में बड़े पैमाने पर बैच प्रोसेसिंग के लिए डिज़ाइन नहीं किया गया है। आप डीबीएएल परत का उपयोग करके बेहतर हो सकते हैं और केवल सरणी के साथ काम कर सकते हैं। – Cerad
** के साथ चल रहा है - नो-डीबग ** बहुत मदद करता है (डीबग मोड में प्रोफाइलर स्मृति में प्रत्येक क्वेरी के बारे में जानकारी बरकरार रखता है) – arnaud576875