डिफ़ॉल्ट रूप से PHP स्क्रिप्ट को हर बार http सर्वर द्वारा बुलाया जाता है, इसलिए प्रत्येक कॉल स्क्रिप्ट पार्सिंग शुरू करती है और शायद ज़ेंड इंजन द्वारा संकलन शुरू करती है। आप एपीसी जैसे स्क्रिप्ट कैशिंग का उपयोग करके इस बाधा से छुटकारा पा सकते हैं। यह स्मृति/डिस्क पर एक बार संकलित PHP स्क्रिप्ट रखता है और इसके बाद के सभी अनुरोधों के लिए इसका उपयोग करता है। लाभ अक्सर महत्वपूर्ण होते हैं, खासकर जेपीएफ जैसे परिष्कृत ढांचे के साथ बनाए गए PHP ऐप्स में।
डिफ़ॉल्ट रूप से प्रत्येक अनुरोध डेटाबेस से कनेक्शन खोलता है, इसलिए आपको कुछ प्रकार के डेटाबेस कनेक्शन पूलिंग या लगातार कनेक्शन (जो हमेशा काम नहीं करते हैं, http सर्वर/PHP कॉन्फ़िगरेशन के आधार पर) का उपयोग करना चाहिए। मैंने कभी कोशिश नहीं की है, लेकिन शायद डेटाबेस कनेक्शन हैंडल रखने के लिए memcache का उपयोग करने का एक तरीका है।
यदि आप प्रत्येक अनुरोध पर उपयोग किए जाते हैं, तो आप सत्र डेटा रखने के लिए memcache का भी उपयोग कर सकते हैं। उनका दृढ़ता इतना महत्वपूर्ण नहीं है और memcache इसे बहुत तेज़ बनाने में मदद करता है।
वास्तविक "समस्या" यह है कि PHP अन्य ढांचे की तुलना में थोड़ा अलग काम करता है, क्योंकि यह एक एसएसआई (सर्वर-साइड शामिल) तरीके से काम करता है - प्रत्येक अनुरोध http सर्वर द्वारा संभाला जाता है और यदि इसे एक PHP स्क्रिप्ट चलाने की आवश्यकता होती है, इसका दुभाषिया प्रारंभ किया गया है और स्क्रिप्ट लोड, पार्स, संकलित और चलाया जाता है। इसकी तुलना कार से होकर, इंजन शुरू करने और 10 मीटर के लिए जा रही है।
दूसरा तरीका है, मान लें, एक एप्लिकेशन-सर्वर तरीका, जिसमें वेब एप्लिकेशन स्वयं अपने लूप में अनुरोधों को संभालने में सक्षम होता है, हमेशा डेटाबेस कनेक्शन साझा करता है और रनटाइम को ओवरराइज नहीं करता है। यह समाधान बहुत कम विलंबता देता है। दूसरी ओर यह पहले से चलने वाली कार में होने और उसी 10 मीटर ड्राइव करने के लिए इसका उपयोग करके तुलना की जा सकती है। ;)
उपरोक्त कैशिंग/प्रीकंपलिंग और पूलिंग समाधान इनिट ओवरहेड को कम करने में सबसे अच्छे हैं।PHP/MySQL अभी भी एक आरडीबीएमएस आधारित समाधान है, और एक अच्छा कारण है कि बिगटेबल क्यों है, ठीक है, केवल एक बड़ा, शर्मीला, बड़े पैमाने पर वितरित हैशटेबल (oversimplification का थोड़ा सा, मुझे पता है) - High Scalability पर पढ़ें।
यह PHP और MySQL के साथ नहीं किया जा सकता है ... –
200ms = 0.2 सेकंड btw। आप * * * php में करने में सक्षम होना चाहिए? – krosenvold
सबसे पहले, वह समय है जब Google पृष्ठ (conect, query, echo ...) उत्पन्न करने के लिए लिया गया वास्तविक समय प्रदर्शित करता है या क्या वह क्वेरी करने के लिए बस इतना समय लगता है? मेरा मानना है कि यह सिर्फ सवाल है। मेरे पास कई पेज हैं जो पूरे पृष्ठ को लोड करने के लिए 0.05 सेकंड लेते हैं। –