2008-10-24 15 views
14

मैं एक वेबपृष्ठ बना रहा हूं जो एक MySQL डेटाबेस से पूछताछ करता है और (वर्तमान में) निष्कर्षों की एकमात्र सूची तैयार करता है।PHP पृष्ठ के लिए स्वीकार्य स्मृति उपयोग क्या है?

  • फिल्म (शीर्षक, विवरण, आदि)
    • अभिनेताओं फिल्म में (नाम, लिंग)
    • संबंधित फिल्में
: एक ही रिकॉर्ड को पूरा करने के प्रश्नों समान करने के लिए कर रहे हैं

जिज्ञासा से मैंने memory_get_peak_usage() और memory_get_usage():

 
start 110,440 bytes 
peak 656,056 bytes 
end 637,976 bytes 
time 0.008 seconds 

उपरोक्त कोई रिकॉर्ड नहीं मिला है!

40 रिकॉर्ड के साथ मैं लगभग 2 एमबी तक पहुंच रहा हूं, हालांकि समय वही रहता है।

मुझे पता है कि समय से पहले अनुकूलन बुराई और सभी है, लेकिन मैं पूछना:

मैं कुछ नए सिरे क्या करने की जरूरत है? क्या यह स्मृति उपयोग सामान्य है? अत्यधिक माना जाता है?

उत्तर

12

आखिरकार सुविधाजनक होने पर ऑप्टिमाइज़ करना बेहतर है, लेकिन 2 एमबी मेमोरी उपयोग ठीक लगता है। PHP4 में 8 एमबी की डिफ़ॉल्ट कॉन्फ़िगरेशन है, और PHP5 16mb। बहुत से प्री-पैक किए गए PHP बिल्डों में निश्चित रूप से अलग-अलग कॉन्फ़िगरेशन होंगे, लेकिन आम तौर पर बोलते हुए, यदि आप अपना ऐप 8 एमबी के तहत रख सकते हैं, तो आप सुनिश्चित कर सकते हैं कि यह उस संबंध में अत्यधिक पोर्टेबल होगा।

8

जाहिर है यह सब आपके द्वारा बनाई जा रही एप्लिकेशन की जटिलता पर निर्भर करता है। औसतन, हमारे आवेदन के पेज मेमोरी के 20 एमबी (मिनट) तक लेते हैं। यही कारण है कि सत्र में वस्तुओं की एक बहुत कुछ है वहाँ, और कहा कि स्क्रिप्ट से पहले होने initialisation प्रक्रिया का एक बहुत भी हैलो दुनिया कह सकते हैं क्योंकि है (authentification, अधिकार प्रबंधन, सूचनाएं, ...)

वहाँ चीजें हैं जो जाना का एक बहुत है मेमोरी स्पेस में, कक्षा परिभाषाओं, ग्लोबल्स, फ़ंक्शन परिभाषाएं आदि शामिल हैं। लोड की गई कक्षाओं (ऑटो-इन-इन का उपयोग करके) की मात्रा को कम करना आपकी स्क्रिप्ट को केवल आवश्यक कक्षाओं की परिभाषाओं के साथ रखने का एक अच्छा तरीका है।

मुझे नहीं पता कि एक्सटेंशन लोड करने से स्मृति उपयोग में परिवर्तन होता है - यह परीक्षण करने के लिए कुछ होना चाहिए, क्योंकि डिफ़ॉल्ट रूप से हमें सभी डिफ़ॉल्ट लोड किए गए एक्सटेंशन की आवश्यकता नहीं हो सकती है?

0

जब तक आप एक अच्छी कैशिंग तंत्र (ओपोड कैश, ऑब्जेक्ट कैश इत्यादि) की योजना बनाते हैं, तो स्मृति उपयोग कम प्रासंगिक हो जाता है। आप अभी भी सामान्य php ढांचे मेमोरी उपयोग के नीचे रास्ता हैं।

3

व्यक्तिगत रूप से मैंने सीमा 8 एमबी निर्धारित की है। यदि मैं उससे अधिक हूं तो मैं अपना आवेदन सुधारने की कोशिश करता हूं। इसका कारण यह है कि कुछ साझा मेजबान और PHP 4 कॉन्फ़िगरेशन में प्रति प्रक्रिया 8 एमबी की डिफ़ॉल्ट सीमा होती है।

2

PHP स्क्रिप्ट निष्पादन के दौरान स्मृति मुक्त नहीं करता है, इसलिए आपकी स्मृति सीमा को उतनी ही अधिक होने की आवश्यकता है जितनी अधिकतर एक स्क्रिप्ट का उपभोग करेगा। यदि सबसे अधिक स्क्रिप्ट कभी भी 2 एमबी का उपभोग करेगी तो इसे 2 एमबी पर सेट करें, लेकिन अगर आपको 780 एमबी की आवश्यकता है तो उसे सेट करें।

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

-2

पीएचपी कौन सा संस्करण उपयोग कर रहे हैं पर dpending संसाधन सीमा में जाना जाता है। वर्तमान संस्करण 128 एमबी, PHP 5.2.0 = 16 एमबी, और पिछले सभी संस्करण 8 एमबी संभाल सकता है।

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