2010-11-03 22 views
9

PHP का उपयोग कर रैम मेमोरी में छोटे डेटा को स्टोर करने का कोई तरीका है ताकि मैं इसे पुन: उत्पन्न करने के बजाय अलग-अलग सत्र के बीच डेटा तक पहुंच सकूं। Memcached के समान कुछ (मुझे memcahced तक पहुंच नहीं है)। मेरा वर्तमान समाधान सिर्फ डेटा में डेटा को सहेजना है।मैं PHP का उपयोग कर रैम मेमोरी में डेटा कैसे स्टोर कर सकता हूं?

+0

[PHP - सर्वर पक्ष चर के संभावित डुप्लिकेट जो हमेशा के लिए "लाइव" होंगे?] (Http://stackoverflow.com/questions/4086044/php-server-side-variables-that-will-live-for- कभी) - वहां बहुत सारे उत्तर हैं जो आपके प्रश्न पर लागू होते हैं। – Gordon

+0

क्यों? किसी भी आधुनिक ऑपरेटिंग सिस्टम पर (जहां स्टोरेज किसी साझा फाइल सिस्टम पर नहीं है) फ़ाइल डेटा को स्मृति में कैश किया जाता है। – symcbean

+0

मेरा जवाब संपादित किया गया। – Strae

उत्तर

4

मुझे लगता है कि आप किसी प्रकार के साझा सर्वर पर हैं।

memcached या अन्य कैशिंग समाधान वास्तव में ऐसा करने का एकमात्र तरीका है।

सत्र, PHP पृष्ठों पर डेटा रखने का सबसे प्रमुख तरीका, फ़ाइलों के आधार पर काम करते हैं। आप सत्र हैंडलर को डेटाबेस के आधार पर बदल सकते हैं, लेकिन यह रैम आधारित नहीं है, या तो।

जहां तक ​​मैं देख सकता हूं, रूट सिस्टम पर आपके सिस्टम को बदलने के बिना (उदाहरण के लिए memcached, या RAM डिस्क पर स्टोर सत्र फ़ाइलों को स्थापित करने के लिए), यह संभव नहीं है।

5

डेटा को सहेजने के लिए आप हमेशा इन-मेमोरी डीबी का उपयोग कर सकते हैं। संभवतः ओवरकिल, यद्यपि।

+1

मुझे आश्चर्य है कि कोई भी आपका जवाब ऊपर नहीं उठाया। मुझे mysql मेमोरी टेबल का उपयोग करके सफलता मिली है और वे वास्तव में तेज़ हैं।आरडीबी सत्रों के लिए अधिक हो सकता है, लेकिन यह एक अच्छा विकल्प है जब आपके पास memcached या/dev/ –

12

APC?

यह memcached से differents काम करता है; memcached में आप विभिन्न भाषाओं (सी, पायथन, आदि ..) से डेटा तक पहुंच सकते हैं जबकि एपीसी केवल PHP के लिए काम करता है।

संपादित करें क्या आप वाकई एपीसी सही तरीके से स्थापित हैं? क्या आपने अपने php.ini में extension=apc.so जोड़ा था? और अपाचे को पुनरारंभ करने के लिए (मुझे लगता है कि आप apache2 के साथ दीपक सर्वर पर हैं)? आप phpinfo(); एपीसी के बारे में क्या कहते हैं?

यह एक बस मेरे लिए पूरी तरह से है कि काम का परीक्षण है:

<?php 
/* 
* page.php 
* Store the variable for 30 seconds, 
* see http://it.php.net/manual/en/function.apc-add.php 
* */ 
if(apc_add('foo', 'bar', 30)){ 
    header('Location: page2.php'); 
}else{ 
    die("Cant add foo to apc!"); 
} 

<?php 
/* 
* page2.php 
* */ 
echo 'foo is been set as: ' . apc_fetch('foo'); 

पुनश्च: मैं apc_store से अधिक apc_add उपयोग करना पसंद करते हैं, लेकिन उन दोनों के बीच फर्क सिर्फ इतना है कि apc_add does not को चर के ऊपर लिख लेकिन अगर कहा जाता है असफल हो जायेगी एक ही कुंजी के साथ दो बार:

इस नाम का उपयोग कर चर स्टोर करें। कुंजी कैश-अद्वितीय हैं, इसलिए apc_add() का उपयोग करने की कोशिश करने के लिए पहले से मौजूद कुंजी के साथ डेटा स्टोर करने के लिए मौजूदा डेटा को ओवरराइट नहीं किया जाएगा, और बदले में FALSE वापस आ जाएगा। (यह apc_add() और apc_store() के बीच फर्क सिर्फ इतना है।)

यह स्क्रिप्ट का स्वाद/कार्य की बात है, लेकिन उपरोक्त उदाहरण apc_store साथ भी काम करता है।

+0

तक पहुंच नहीं है, वह memcached स्थापित नहीं कर सकता है, तो संभावना है कि वह एपीसी को –

+0

सही इंस्टॉल नहीं कर सकता है, लेकिन कई होस्टर अनुमति एपीसी का उपयोग (कुछ सीमाओं के साथ) - हमें उससे पूछना होगा। – Strae

3

/dev/shm में एक फ़ाइल बनाएं और इसे मशीन रीबूट होने तक स्मृति में रखा जाएगा। यह आपके उपयोग पैटर्न के आधार पर, किसी पुरानी फ़ाइल का उपयोग करने से तेज़ हो सकता है या नहीं भी हो सकता है।

+0

वह एक साझा सर्वर –

+2

@ पेक्का वेल पर प्रतीत होता है, तो वह खराब हो गया है ... आइए बस उम्मीद करें कि उसकी फाइल ओएस द्वारा कैश की जाती है। – kijin

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

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