2011-11-21 13 views
6

मेरे पास एक बड़ी PHP स्क्रिप्ट है जो स्मृति को लीक कर रही है। मैं यह पता लगाने में सक्षम हूं कि कौन सी वस्तु लीक हो रही है, लेकिन मैं यह पता लगाने में सक्षम नहीं हूं कि लिपि में कहां ली जा रही है। मेरी लिपि का कुछ हिस्सा लीकिंग ऑब्जेक्ट का संदर्भ रख रहा है।PHP मेमोरी रिसाव डीबगिंग। संदर्भ गिनती को ट्रैक करना?

क्या कोई तरीका है कि मैं ट्रैक कर सकता हूं (और अधिमानतः बैकट्रैक) जहां PHP ऑब्जेक्ट की संदर्भ गणना बढ़ जाती है या घट जाती है?

उत्तर

2

आप रूपरेखा उपकरण का उपयोग कर सकते हैं पता लगाने के लिए क्या अपनी स्मृति लीक कर रहा है मैं का उपयोग करना पसंद http://xdebug.org/ और http://code.google.com/p/webgrind

http://derickrethans.nl/xdebug-and-tracing-memory-usage.html

+1

धन्यवाद। मैं XDebug और फ़ंक्शन ट्रेसिंग के साथ familliar हूँ। लेकिन क्या आप जानते हैं कि मैं अपने कोड में मेरी लीकिंग ऑब्जेक्ट को संदर्भित करने के लिए इसका उपयोग कैसे कर सकता हूं? –

+0

आप वेबग्रिंड के साथ ट्रैक करने का प्रयास कर सकते हैं, यह आपको अपने सभी आमंत्रित कार्यों को दिखाएगा-तरीकों से, यह स्मृति उपयोग नहीं दिखाएगा, लेकिन मुझे लगता है कि आप उन्हें समय-समय पर ट्रैक कर सकते हैं-उपयोग –

1

प्रयास करें:

इसके अलावा, मैं कोड को आसानी से डीबग तरीके से लिखने और कोड से डीबगिंग प्रक्रियाओं को अलग करने का सुझाव देता हूं।

+0

मैंने यह पता लगाने के लिए पहले से एक्सडीडीबग का उपयोग किया है कि कौन सी ऑब्जेक्ट लीक हो रही है । मैं अब क्या जानना चाहता हूं वह लीक हो रहा है? अर्थात। जहां मेरे कोड में उस वस्तु के संदर्भ हैं? क्या XDebug इसका उपयोग किया जा सकता है? –

+0

ऑब्जेक्ट लीक करने का पता लगाने के लिए आपने ब्रेकपॉइंट्स का उपयोग कैसे किया? एक "सामान्य" समाधान के साथ आना मुश्किल है। –

+1

इसलिए मेरा प्रश्न। मैंने आशा की थी कि जब ज़ेंड इंजन ऑब्जेक्ट की आंतरिक संदर्भ संख्या में वृद्धि या कमी करे तो ट्रैक करने या ट्रिगर करने का कोई तरीका था। –

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