यदि आप ज़ेड के PHP का संस्करण उपयोग कर रहे हैं, तो यह आसान है।
आपको अपने डेटा को क्रमबद्ध करने की आवश्यकता नहीं है।
केवल सामग्री को कैश किया जा सकता है। फ़ाइल हैंडल जैसे संसाधन नहीं कर सकते हैं। सत्य/गलत स्टोर करने के लिए, 1,0 का उपयोग करें ताकि आप ===
के परिणामस्वरूप कैश विफलता को अलग कर सकें।
स्टोर:
zend_shm_cache_store('cache_namespace::this_cache_name',$any_variable,$expire_in_seconds);
प्राप्त करें:
$any_variable = zend_shm_cache_fetch('cache_namespace::this_cache_name');
if ($any_variable === false) {
# cache was expired or did not exist.
}
लंबे रहते थे डेटा के लिए आप उपयोग कर सकते हैं:
zend_disk_cache_store();zend_disk_cache_fetch();
Zend के बिना उन लोगों के लिए, ऊपर की इसी एपीसी संस्करणों:
स्टोर:
apc_store('cache_name',$any_variable,$expire_in_seconds);
प्राप्त करें:
$any_variable = apc_fetch('cache_name');
if ($any_variable === false) {
# cache was expired or did not exist.
}
उल्लेख अन्य तरीकों में से किसी भी प्रयोग किया जाता है कभी नहीं। यदि आपके पास साझा स्मृति उपलब्ध नहीं है, तो आप डिस्क पर डेटा को क्रमबद्ध/अनसुलझा कर सकते हैं। बेशक साझा स्मृति तेज हो गया है और Zend के बारे में अच्छी बात यह है कि यह आपके लिए संगामिति मुद्दों संभालती है और नामस्थान अनुमति देता है:
स्टोर:
file_put_contents('/tmp/some_filename',serialize($any_variable));
प्राप्त करें:
$any_variable = unserialize(file_get_contents('/tmp/some_filename'));
संपादित करें: को संभालने के लिए समेकन खुद को जारी करता है, मुझे लगता है कि लॉकिंग का उपयोग करना सबसे आसान तरीका होगा। मैं अभी भी लॉक के बीच इस psuedo कोड में दौड़ की स्थिति की संभावना को देख सकता हूं और ताला लगा सकता हूं, लेकिन आपको बिंदु मिल गया है।
छद्म कोड:
while (lock exists) {
microsleep;
}
get lock.
check we got lock.
write value.
release lock.
पीएचपी ही नहीं 'आवेदन संदर्भ' है। वर्कअराउंड (अर्थात् फाइलों या साझा मेमोरी में सामान संग्रहित करना) हैं, लेकिन अन्यथा, PHP स्क्रिप्ट के निष्पादन के अंत में कुछ भी नहीं बचा है। – zneak