2012-02-23 10 views
7

स्पष्ट अंतर यह है कि memcache(d) में संग्रहीत डेटा उपलब्ध हो जाता है। प्रति उपयोगकर्ता सत्र डेटा संग्रह, हालांकि, session_id() सैद्धांतिक रूप से इस डेटा को अधिक उपयोगकर्ताओं के साथ साझा करने के लिए उपयोग किया जा सकता है।

हालांकि, प्रदर्शन, गति और स्मृति उपयोग के मामले में - क्या कोई अंतर है?

+0

आप भूल गए हैं कि _SESSION स्मृति में नहीं है। –

+0

@rdlowrey, वाह। किसने आपको बताया कि फ़ाइल-सिस्टम memcache (डी) द्वारा प्रदान की गई मेमोरी स्टोरेज की तुलना में धीमी है? उल्लेख नहीं है कि यह ध्यान में नहीं आता है कि हार्डवेयर एसएसडी है या नहीं। – Gajus

+0

हर कोई याद करता है कि memcache एक स्थानीय memcache सर्वर (एप्लिकेशन के रूप में एक ही मशीन पर स्थापित) माना जाता है। यह मामला हो सकता है, जब किसी नेटवर्क में उपयोग किया जाता है, तो यह नेटवर्क पर बहुत निर्भर होगा। –

उत्तर

5

PHP सत्र डिफ़ॉल्ट रूप से फाइल सिस्टम में संग्रहीत हैं। आप इस व्यवहार को संशोधित कर सकते हैं ताकि वे किसी डेटाबेस में सहेजे जा सकें, या आपके मामले में memcached।

तो प्रदर्शन के संदर्भ में, memcached आमतौर पर फाइल सिस्टम से तेज है। यह स्पष्ट रूप से आपके पर्यावरण पर निर्भर करता है।

देखें session_set_save_handler

+0

कृपया स्रोत साझा करें जो बताता है कि फाइल सिस्टम memcached से धीमा है। – Gajus

+3

@Guy स्पष्ट रूप से यह आपके हार्डवेयर पर निर्भर करता है और संबंधित हार्डवेयर पर लोड करता है। * आम तौर पर * आप पाएंगे कि आपके 7.2k आरपीएम एचडीडी आपकी स्मृति से धीमे हैं – Vitamin

+5

@Guy - क्या आपको वास्तव में एक "संसाधन" की आवश्यकता है जो बताती है कि हार्ड डिस्क ड्राइव यादृच्छिक अभिगम स्मृति से धीमी है? यदि हां, तो विकिपीडिया पर कुछ संख्याओं की जांच करें या राम के साथ बाधाओं की तुलना करें। त्वरित तथ्यों: रैम एक्सेस टाइम को नैनोसेकंड में मापा जाता है और गीगाबाइट्स में डेटा दर (32 गीगा वह है जिसे हम वर्तमान में प्राप्त कर सकते हैं) जबकि एसएसडी की तुलना उस समय की तुलना नहीं कर सकती है जो कुछ 500ish मेगाबाइट्स सेकेंड प्राप्त कर रहे हैं, जो कि समय के माइक्रोसेकंड के साथ एक सेकेंड प्राप्त कर रहे हैं। –

0

ठीक है, आप बस $_SESSION के लिए memcache का उपयोग कर सकते हैं। यह निश्चित रूप से तेज़ है, क्योंकि इसे PHP API पर बहुत सी कॉल की आवश्यकता नहीं है, लेकिन यह सीधे सीपीआई पर जाता है।

हालांकि छोटे प्रदर्शन बोनस, PHP वास्तव में धीमा नहीं है।

यदि आप फाइल सिस्टम सत्रों के साथ memcache की तुलना करने जा रहे हैं: memcache का उपयोग करें। वास्तव में, आपको फाइल सिस्टम पर संग्रहीत करने के बजाय उन्हें स्मृति में संग्रहीत करना चाहिए। बहुत तेज़ बेशक, यदि memcache सर्वर अधिभारित होता है तो आप सत्र डेटा खोने का जोखिम लेते हैं। मेमकेचे का मेमोरी उपयोग निश्चित रूप से फाइल सिस्टम विकल्प से अधिक होगा।

+0

अगर मैं गलत हूं तो मुझे सही करें लेकिन सी में बनाए गए PHP एपीआई/एक्सटेंशन नहीं हैं? – Bot

+0

हां, वे हैं, लेकिन यदि आप '$ _SESSION' प्रतिस्थापन के बजाय सत्र को संग्रहीत करने के लिए कच्चे मेमकेच फ़ंक्शंस का उपयोग करना चाहते हैं, तो यह थोड़ा धीमा हो जाएगा, क्योंकि PHP को आपके द्वारा किए गए प्रत्येक फ़ंक्शन कॉल को समझना और देखना होगा। –

0

सत्र या तो एक फ़ाइल या डेटाबेस में संग्रहीत हैं। तेजी से पहुंच के लिए स्मृति में Memcache संग्रहीत किया जाता है।

2

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

सभी चीजें बराबर होती हैं, memcache फ़ाइल कैशिंग से कहीं बेहतर प्रदर्शन करती है। स्मृति के संदर्भ में, जब आप डेटा प्राप्त करने के लिए फ़ाइल पढ़ते हैं (इस मामले में सत्र फ़ाइल), यह किसी भी तरह स्मृति में जाता है, इसलिए यह किसी भी स्थान को सहेजता नहीं है। असल में अगर अपाचे के लिए कई अनुरोध होते हैं तो अलग-अलग कार्यकर्ता प्रक्रिया को उसी सत्र फ़ाइल को पढ़ने की आवश्यकता हो सकती है - प्रत्येक कार्यकर्ता प्रक्रिया का उपयोग होने तक स्मृति के अपने स्वयं के हिस्से का उपयोग कर सकता है। Memcache का उपयोग, ऐसा नहीं होता है।