2010-09-14 8 views
12

मैं जावा और सी # डेवलपर हूं, और, मैं मानता हूं, मैं PHP में अच्छा नहीं हूं।मैं PHP में किसी एप्लिकेशन स्कोप में डेटा कैसे सहेजूं?

मुझे किसी ऑब्जेक्ट को उस एप्लिकेशन स्कोप में स्टोर करने की आवश्यकता है जो तब तक रहता है जब तक ऐप स्वयं चल रहा हो। मैं इसे सत्र में सहेज नहीं सकता, क्योंकि यह समाप्त हो जाता है, मैं इसे डिस्क पर क्रमबद्ध नहीं कर सकता।

क्या PHP में सी # Application ऑब्जेक्ट की तरह कुछ है?

+0

ध्यान रखें कि जावा (और शायद सी # में) के विपरीत, PHP कोड किसी पृष्ठ अनुरोध के बाहर नहीं रहता है। आपको इसे मैन्युअल रूप से स्टोर करना होगा और इसे प्रत्येक पृष्ठ के लिए कहीं भी पुनर्प्राप्त करना होगा - हालांकि, यह आसानी से आपके ढांचे के अंदर डाल दिया जाता है ताकि यह "हमेशा उपलब्ध" हो सके। – staticsan

उत्तर

17

2018 संपादित करें: समय है नहीं गया तरह एपीसी को, खासकर जब से पीएचपी 7 के लिए Zend अनुकूलक +, जो मोटे तौर पर एक ही बात (की-दुकान को छोड़कर) करता है बंडल समर्थन शामिल है। इन दिनों, मुख्य स्टोर पहलू को the APCu project में फोर्क कर दिया गया है।

हालांकि, 2018 में, पसंद की पसंदीदा कुंजी-स्टोर Redis है। विवरण के लिए ext-redis project देखें।


PHP के पास एक प्रकार का अनुप्रयोग क्षेत्र है। इसे APC (Alternative PHP Cache) कहा जाता है।

डाटा एपीसी में कैश किया जाना चाहिए अगर यह निम्नलिखित मानदंडों को पूरा:

  1. यह उपयोगकर्ता सत्र-विशिष्ट नहीं है
  2. यह वास्तव में लंबे समय नहीं है (यदि हां, तो $ _SESSION [] में डाल) अवधि
  3. यह केवल एक पीएचपी सर्वर पर की जरूरत है (अगर ऐसा है, फाइल सिस्टम का उपयोग करें) (यदि नहीं, memcached उपयोग करने पर विचार)
  4. आप, यहां तक ​​कि अन्य, यह आपके साइट के प्रत्येक पृष्ठ के लिए उपलब्ध चाहते तुरन्त (गैर जुड़े) PHP कार्यक्रम।
  5. आपको कोई फर्क नहीं पड़ता कि इसमें संग्रहीत सभी डेटा अपाचे रीलोड/पुनरारंभ पर खो गया है।
  6. आप डेटा-आधारित, memcached, या (esp।) डेटाबेस-आधारित से डेटा तक पहुंचना चाहते हैं।

एपीसी पहले से ही बहुत से मेजबानों पर स्थापित है, लेकिन अपने बॉक्स पर स्थापित करने के लिए उपर्युक्त मार्गदर्शिका का पालन करें। फिर आप ऐसा कुछ करते हैं:

if (apc_exists('app:app_level_data') !== false) 
{ 
    $data = apc_get('app:app_level_data'); 
} 
else 
{ 
    $data = getFromDB('foo'); 
    apc_store('app:app_level_data', $data); 
} 
+4

यह apc_fetch है, apc_get नहीं, मुझे लगता है ... – raoulsson

+0

@raoulsson, आप सही हैं, उत्तर संपादित करें। – daVe

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