2009-11-21 12 views
8

मैं वर्षों से PHP लिख रहा हूं, और सूर्य के नीचे हर ढांचे का उपयोग किया है, लेकिन एक चीज ने मुझे हमेशा खराब कर दिया है ... और यह है कि हर बार जब कोई मेरे सर्वर को बताता है तो पूरी खूनी चीज़ का व्याख्या और निष्पादन किया जाना चाहिए चाहते हैं कि पेज परोसें।गंभीर रूप से PHP को तेज करना?

मैंने कैशिंग, फास्टसीजीआई, ज़ेंड जॉब क्यूई (और सिम्फनी प्लग-इन जो समान हैं - साथ ही साथ अपने स्वयं के डीबी-आधारित समाधान जो पृष्ठभूमि प्रक्रियाओं को चलाने के लिए System_Daemon क्लास को कार्यान्वित करते हैं) के साथ प्रयोग किया है और मेरे पास है उन सभी चीजों का उपयोग करके मेरे ऐप्स को काफी तेज़ी से बनाने में कामयाब रहा ... लेकिन मैं मानसिक ब्लॉक से अधिक नहीं हो सकता कि मेरी सेटिंग्स फाइलें, सिस्टम/पर्यावरण जांच फ़ंक्शंस, और उन सभी चीजें जिन्हें केवल वास्तव में लोड किया जाना चाहिए ... लोड प्रत्येक डर्न टाइम कोई मेरा पेज हिट करता है।

तो, मेरी पर्यटन निम्नलिखित Q--

की ओर जाता है वहाँ रैम में पीएचपी के कुछ पहलुओं को जब उस पृष्ठ का अनुरोध किया जाता है कि ऐसा है, मेरे सभी settings.yml फ़ाइलों से लोड होने वाले विधि/तकनीक है, सिस्टम चेक, फ्रेमवर्क फाइल, कैश किए गए पेज इत्यादि को एचडी को छूए बिना स्मृति से सीधे लोड किया जा सकता है ... या कार्यक्रम में प्रवेश करने के लिए प्रति दिन 50,000 बार उसी लोडिंग तंत्र से गुज़रने की आवश्यकता है?

यदि PHP में कुछ भी नहीं है ... क्या कोई अन्य 'वेब' भाषाएं हैं जिन्हें इस तरह से संकलित किया जा सकता है, ताकि एक बार ऐप को सही init की अनुमति मिल सके?

उत्तर

9

मुझे लगता है कि आपको memcached एक प्रयास करना चाहिए, यदि आप डेटा कैशिंग के बारे में बात कर रहे हैं। मुझे लगता है कि यदि आप अपाचे में mod_php जैसे सामान का उपयोग करते हैं तो PHP संकलित php-पृष्ठों को कैशिंग में काफी कुशल है (जो अनुरोधों के बीच में मर नहीं जाता है)।

+0

memcached भी फेसबुक द्वारा उनके कैशिंग को तेज करने के लिए उपयोग किया जाता है –

2

रैम डिस्क पर एक पूर्ण पृष्ठ कैश बनाएं और अपना वेब सर्वर वहां से पृष्ठ की सेवा करें। यह एक तरीका है कि वर्डप्रेस सुपरकेच प्लगइन का उपयोग करता है और यह बहुत अच्छा काम करता है यदि आपकी वेबसाइट पूर्ण पृष्ठ कैशिंग के लिए उपयुक्त है। यह घास आप PHP दुभाषिया का भी आह्वान नहीं कर रहे हैं।

लॉग इन करने वाले उपयोगकर्ताओं के लिए (एक खुला सत्र है) आप एक पुनर्लेखन स्थिति बना सकते हैं जो उनके अनुरोध को PHP इंजन पर रीडायरेक्ट करेगा।

इसके अलावा, हमेशा एपीसी जैसे ओपोड कैश का उपयोग करें और इसे कैशिंग कॉन्फ़िगरेशन फ़ाइलों के लिए उपयोग करें (memcache भी ठीक है)।

1

यदि आप एप्लिकेशन सर्वर जैसे JVM/Tomcat के लिए पूछ रहे हैं, तो उत्तर संभवतः नहीं है। मेरे ज्ञान के लिए कुछ भी नहीं (प्रयोग योग्य) जैसे PHP के लिए यह मौजूद है। PHP एक साझा-कुछ भी आर्किटेक्चर का उपयोग नहीं करता है, इसलिए यह सभी अनुरोधों पर डिज़ाइन द्वारा किया गया है। लेकिन वास्तव में, यह PHP पैमाने बहुत अच्छी तरह से बनाता है।

अपने ऐप्स को तेज़ करने के लिए, memcached और code accelerator का उपयोग करने का प्रयास करें। एक पूरा पैकेज प्राप्त करने के लिए शायद Zend Server पर देखें।

0

आपके अंतिम प्रश्न के संबंध में, मेरा मानना ​​है कि कम से कम पाइथन और रूबी वेब ढांचे इस तरह काम करते हैं।

रूबी वेब एप्लिकेशन आजकल बनाए गए हैं ताकि ऐप केवल प्रति सर्वर प्रक्रिया में शुरू हो जाए। जब अनुरोध आते हैं, तो सर्वर (उदाहरण के लिए अपाचे) उन्हें वेब एप्लिकेशन (Rack इंटरफ़ेस से अधिक) पर भेजता है जो पृष्ठभूमि पर चल रहा है।

इस प्रकार वेब फ्रेमवर्क Rack पर आधारित है। रेल पर रूबी के पुराने संस्करण समान थे, हालांकि उन्होंने वेब सर्वर से बात करने के लिए एक अलग इंटरफ़ेस का उपयोग किया था।

+0

क्या PHP के बराबर है? –

8

APC (Alternative PHP Cache) पर एक नज़र डालें, यह संकलित फ़ाइलों (PHP ओपोड) का कैश रखता है और आपको apc_fetch, apc_store के साथ स्मृति पर यादृच्छिक चर स्टोर करने देता है।

इंस्टालेशन बहुत आसान है और यह वास्तव में प्रदर्शन पर बढ़ावा देता है।

+0

+1 क्योंकि एपीसी एक ओपोड कैश से अधिक है – gpilotino

+0

इसके अलावा यह php 6 में बनाया जा रहा है –

0

मैं अब फेसबुक इंजीनियरिंग पेज (http://www.facebook.com/notes.php?id=9445547199) पर नजर रखूंगा, और फिर वे पोस्ट के साथ आते हैं कि वे चीजों को तेज़/अनुकूलित/स्केल कैसे रखते हैं। मुझे लगता है कि वे PHP का उपयोग कर रहे हैं सुपर प्रभावशाली है।

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