2010-08-02 11 views
14

वहां बहुत से PHP ढांचे हैं; कुछ बहुत सभ्य हैं, दूसरों को सूजन और अनावश्यक लगता है। Rasmus Lerdorf's presentation on PHP performance at Digg देखने के बाद, मैं अपने अनुप्रयोगों के निर्माण के लिए चुनने वाले ढांचे के प्रदर्शन के बारे में कुछ और चिंतित हूं।PHP फ्रेमवर्क ओवरहेड

कोडिग्निटर और केकेपीएचपी के बारे में मुझे पता है कि सबसे लोकप्रिय ढांचे में से दो हैं। जो मैं समझता हूं, केकेपीएचपी एक भयानक संसाधन हॉग है। CodeIgniter के बारे में क्या? मैंने सुना है कि ज़ेंड फ्रेमवर्क सभी पतले नहीं हैं, या तो।

क्या अन्य (अधिक प्रदर्शनकारी) ढांचे हैं जिनमें मुझे रुचि होनी चाहिए? क्या फ्रेमवर्क का उपयोग न करना बेहतर होगा? PHP ढांचे को चुनने के लिए मुझे क्या विचार करना चाहिए?

+0

संभावित डुप्लिकेट [क्या सिम्फनी और केकेपीएचपी उपयोग करने योग्य हैं?] (Http: // stackoverflow।कॉम/प्रश्न/2 9 28908/हैं-सिम्फनी-एंड-केकफ़्पी-बहुत-धीमी-से-उपयोग करने योग्य) – ircmaxell

उत्तर

32

एक रूपरेखा का उपयोग करना या एक रूपरेखा का उपयोग नहीं कर मतलब है कि आप

  • स्पीड/विकास की स्थिरता

  • तो लोड के अंतर्गत

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

      विकास समय में आपको कौन सा ढांचा खरीदता है, यह गति है। आपको लंबे जटिल एसक्यूएल प्रश्नों को लिखना नहीं है, या किसी और के लंबे जटिल SQL प्रश्नों को डीबग करना नहीं है। आपको बस एक टेबल बनाने और मॉडल को तुरंत चालू करने की आवश्यकता है। आपको यह तय करने की आवश्यकता नहीं है कि आप अपने एसक्यूएल पैरामीटर से बचने जा रहे हैं, क्योंकि ढांचा परिभाषित करता है कि यह कहां होता है। आपको व्यवसायिक तर्क बनाम प्रेजेंटेशन लॉजिक कहां जाता है, जहां पर फ्रेमवर्क इसे परिभाषित करता है, जहां आपको विशाल राजनीतिक झगड़े में शामिल होने की आवश्यकता नहीं है। एक ढांचा आपकी टीम पर सिस्टम डेवलपर होने की आवश्यकता को हटा देता है, या सिस्टम विकास पर समय/बर्बाद करने के बारे में सोचने से आपको हटा देता है। आप अपने आवेदन को तेजी से कोडिंग कर सकते हैं और जल्द से जल्द मापने योग्य, दृश्यमान परिणाम प्राप्त कर सकते हैं।

      इसके बारे में सोचने का एक और तरीका है। PHP फ्रेमवर्क PHP से धीमे होते हैं, लेकिन PHP स्वयं सी से धीमा है क्यों सी में सीधे अपना आवेदन नहीं लिखें?

      यहां कोई सही जवाब नहीं है, यह उन सॉफ्टवेयर इंजीनियरिंग/विकास प्रश्नों में से एक है जो आपकी वर्तमान स्थिति की मांग के मामले में है। इन दिनों उद्योग की डिफ़ॉल्ट पसंद एक ढांचे का उपयोग करना है, क्योंकि यदि आप नहीं करते हैं तो आपके प्रतिस्पर्धियों को एक एप्लिकेशन जारी किया जाएगा जिसमें आपके मुकाबले धीमी PHP प्रसंस्करण हो, लेकिन तीन महीने पहले बाजार में हिट हो जाए।

      अंत में, उस बात से विचार करने वाली एक आखिरी बात। रasmस ने कहा कि ज्यादातर समय आपके आवेदन का अनुमानित प्रदर्शन फ्रंटेंड में है। जावास्क्रिप्ट कोड और ब्राउज़र दोनों अनुरोधों को कैश कर रहा है, यह आपके सर्वर पर वापस आ जाता है। PHP एक भयानक, भयानक भाषा है जो शायद ही कभी बाधा है। जब यह बोतल की गर्दन होती है, तो आप आम तौर पर कुछ समायोजन (ऑप्ट कोड कैश, केंद्रित रिफैक्टरिंग) कर सकते हैं जो प्रदर्शन बाधा को हटा देगा।

    +4

    मुझे वास्तव में आपका पाठ पढ़ने में मज़ा आया और अधिक सहमत नहीं हो सका। अच्छा काम। +1 –

    3

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

    लेकिन अधिकांश मामलों के लिए डिज़ाइन किया गया है, तो आप नहीं करना चाहिए इसके बारे में चिंता करें। मैं कई परियोजनाओं पर सिम्फनी (संस्करण 1.2 & 1.4) का उपयोग कर रहा हूं, और कभी नहीं सोचा है कि "यह बहुत संसाधन भारी है"। मैं खुशी से कुछ संसाधनों के बदले में कुछ संसाधनों का त्याग करूंगा जो एक ढांचा प्रदान करता है जो मेरे जीवन को आसान बनाता है, और नौकरी कम समय लेती है;)

    +1

    एक और अपवाद है। कम सर्वर संसाधनों के बदले में प्रोजेक्ट विस्तारित डेवलपर समय के लिए प्रोजेक्ट का पर्याप्त ट्रैफिक स्तर है (यह एक बहुत ही उच्च स्तर है, लेकिन यह एक वैध अपवाद है) ... – ircmaxell

    +3

    मुझे लगता है कि प्रदर्शन समस्याओं पर अधिक हार्डवेयर फेंकना हमेशा सस्ता है कोड को अनुकूलित करने के लिए डेवलपर्स का भुगतान करना, और फिर कम पठनीय कोड की वजह से बढ़ी हुई रखरखाव लागत। कैशिंग जैसे स्पष्ट और आसान कदम निश्चित रूप से किए जाने चाहिए, लेकिन स्पष्ट सामग्री के अलावा। –

    +2

    यह हमेशा सस्ता नहीं होता है ... जब आपके पास सैकड़ों या हजारों सर्वर होते हैं, तो प्रदर्शन समस्याओं के लिए प्रोग्रामर को समर्पित करना उस पर अधिक हार्डवेयर फेंकने से कहीं अधिक सस्ता होगा। ओह, और जब से एक ढांचे का उपयोग नहीं करता === कम पठनीय कोड? हम पूरे आवेदन लिखने वाले जूनियर डेवलपर के बारे में बात नहीं कर रहे हैं (मैं सभी तरफ एक सक्षम डेवलपर मान रहा हूं) ... – ircmaxell

    8

    आप लाइटवेट फ्रेमवर्क श्रेणी में देखना चाहेंगे। fat-free, doophp, limonade, आदि वे हल्के हैं, लेकिन आपके विचार से कम शक्तिशाली नहीं हैं। प्रकाशित बेंचमार्क पर भरोसा मत करो। इसके बजाय, अपने उद्देश्यों के खिलाफ बेंचमार्क।

    +0

    +1। :) – cbednarski

    0

    जहां तक ​​मुझे पता है कि कोडइग्निटर हल्का ढांचा है। मुझे पता है कि ज्यादातर लोग कोडइग्निटर बनाम केकेपीएचपी का उपयोग करते हैं। लेकिन मैं कई सालों से केकेपीएचपी का उपयोग कर रहा हूं।

    यदि आप वास्तव में पैमाने के बारे में चिंता करते हैं, तो शुरुआत से मोंगो डीबी या कॉच डीबी जैसे एनओएसक्यूएल समाधान का उपयोग करने पर नज़र डालें। (मैं MongoDB का उपयोग करता हूं और अधिकांश अनुप्रयोगों के लिए mongo MYSQL को प्रतिस्थापित कर सकता है)। फ्रंट एंड के अलावा, डेटाबेस कॉल अक्सर आपको धीमा कर देती है।

    किसी अन्य बात पर विचार करने में देरी कार्यकर्ता कतार है। इसके लिए थंबनेल में छवियों को प्रोसेस करने की तरह यह अक्सर एक अलग प्रक्रिया से निपटने के लिए सबसे अच्छा होता है और उपयोगकर्ता को प्रतीक्षा करने से बचें।

    लगभग सभी बड़े पैमाने पर वेबसाइट कैशिंग का उपयोग करती हैं। डाटाबेस कैशिंग और एचटीएमएल कैशिंग। आप मेमकैच को देख सकते हैं जो लगभग हर किसी का उपयोग करता है और आपके कैश को स्मृति में संग्रहीत करता है। मोंगो डीबी ने डेटा कॉल करते समय गति की तरह याद दिलाया है।

    जैसा कि हर किसी की तरह कहता है, यह ज्यादातर ढांचा नहीं है जो स्केल नहीं करता है। यह तुम्हारा पूरा वास्तुकला है। मैंने अन्य हल्के ढांचे को नहीं देखा है, लेकिन यदि आप केकेपीएचपी और कोडइग्निटर के बीच चयन कर रहे हैं, तो मैं व्यक्तिगत रूप से कोडइग्निटर के साथ जाऊंगा। साथ ही यह सुनिश्चित करें कि आप समय के साथ अपने कोड को दोबारा जारी रखना जारी रखेंगे, इससे आपको अपने ऐप को गति देने वाले बदलाव करने का मौका मिलेगा।

    1

    मैंने कई वर्षों की अवधि में क्रोध में केवल केकपीएचपी का उपयोग किया है। हां, यह बड़ा है और प्रतीत होता है, लेकिन ईमानदार होने के लिए, मुझे लगता है कि अगर मैंने किसी अन्य ढांचे का उपयोग किया था तो यह तब तक बड़ा होगा जब मैंने अपने पास जो कुछ भी जोड़ा है और केक के साथ उपयोग किया है।

    स्पीड-वार, हम दावेदारों के बीच सेकंड अंतर के छोटे अंशों की बात कर रहे हैं। Yslow और gzip जैसे टूल का उपयोग करके अपनी साइट को अनुकूलित करना और, ज़ाहिर है, समझदार डिज़ाइन, ढांचे की पसंद से अधिक सुधारों का एहसास होगा।

    http://www.grasset.es एक साइट है जिसे मैंने 4 साल पहले केक के साथ बनाया था। यह बड़ा और जटिल है, लेकिन मुझे नहीं लगता कि यह धीमा है।

    3

    मैंने Yii PHP ढांचे के साथ कुछ बड़े एप्लिकेशन बनाए हैं। यह बहुत तेज है क्योंकि यह "आलसी" ऑटो लोड वर्गों। मेरे पास no performance complaints है।

    आप एक PHP opcode कैश/APC या eAccelerator तरह त्वरक चलाते हैं, और दीप व्यवस्था पर page loading speed के लिए हमेशा की तरह best practices के सभी करते हैं, तो का उपयोग कर एक PHP ढांचे अच्छी तरह से इसे विकास समय बचाया के लिए लायक हो जाएगा। निष्पादन वास्तव में एक मुद्दा नहीं होगा जब तक आप अनुरोधों की खगोलीय संख्या की सेवा नहीं कर रहे हों!

    +0

    मुझे लगता है कि मैंने कहीं कहीं पढ़ा है कि आलसी लोडिंग कक्षाओं के लिए कुछ बड़े ओवरहेड समय हैं। शायद यह PHP का पुराना संस्करण था या शायद मैं इसे अभी बना रहा हूं? जब तक वे कुछ कस्टम नहीं कर रहे हैं (यानी: मूल PHP वर्ग ऑटोलोडिंग नहीं)। – mattbasta

    +0

    Yii2 ने प्रदर्शन को अपनी सीमा तक निचोड़ा। प्रदर्शन ओवरहेड मुश्किल से ध्यान देने योग्य है। एपीसी और अन्य जुड़े प्रश्न यहां निश्चित रूप से पढ़ने लायक हैं! धन्यवाद :) – LihO

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