2010-11-03 19 views
7

मैं एपीसी का उपयोग करने की कोशिश कर रहा था, लेकिन ऐसा लगता है कि यह काम नहीं करता है।PHP "apc_store" और "apc_fetch" अपेक्षित काम नहीं कर रहे हैं

file1:

$bar = 'BAR'; 
apc_store('foo', $bar, 3600); 
var_dump(apc_fetch('foo'));   // It works here. Displays BAR 

करें 2:

var_dump(apc_fetch('foo')); 

जब मैं सेकंड के भीतर file2 निष्पादित, यह रिटर्न 'बार' जो कैश में संग्रहीत डेटा है के बजाय false

+0

इसमें कभी भाग नहीं आया, लेकिन यह तब भी हो रहा है जब [apc.localcache] (http://www.php.net/manual/en/apc.configuration.php#ini.apc.localcache) गलत पर सेट है ? – Wrikken

+0

क्या आप किसी वेब पेज से या कमांड लाइन से परीक्षण कर रहे हैं? –

+3

आप किस एसएपीआई का उपयोग कर रहे हैं? Mod_php के साथ अपाचे? SUEXEC (जो सीजीआई के चारों ओर एक रैपर से ज्यादा कुछ नहीं है)? FastCGI? सीजीआई? मेरा अनुमान है कि आपके पास एक से अधिक PHP प्रक्रियाएं हैं, इसलिए वे स्मृति स्थान साझा नहीं कर रहे हैं ... – ircmaxell

उत्तर

0

सर्वर के संरक्षित क्षेत्र में यह (http://svn.php.net/viewvc/pecl/apc/trunk/apc.php?view=markup) स्थापित करें, इसे टिप्पणियों में वर्णित करें, और इसे आपके एपीसी कैशिंग मुद्दों को एक हवा का निदान करना चाहिए ... या कम से कम आपको कुछ बेहतर जानकारी क्यों देनी चाहिए वांछित के रूप में काम नहीं कर रहा है।

4

यह ठीक काम करता है :) - जब तक आपको याद है कि कमांड लाइन से निष्पादित प्रत्येक PHP स्क्रिप्ट का अपना कैश उपयोग होता है, तो आप स्क्रिप्ट 2 के अंदर स्क्रिप्ट 1 द्वारा सहेजे गए डेटा तक पहुंच नहीं पाएंगे। (आप इसे स्क्रिप्ट 1 के बाद के भाग में एक्सेस नहीं कर सकते हैं, क्योंकि स्क्रिप्ट खत्म होने पर इसे साफ़ कर दिया जाता है)

ये कैश उन कैश से भी अलग हैं जिन्हें आप सबसे अधिक उपयोग करना चाहते हैं, और यह निष्पादित PHP स्क्रिप्ट का कैश है अपने वेब सर्वर के माध्यम से।

तो तुम उन परीक्षण आपके webroot में सहेजा ऊपर ताकि आप उदाहरण http://localhost/file1.php के लिए http://localhost/file2.php

उपयोग कर सकते हैं, तो यह अपेक्षा के अनुरूप काम करेंगे है।

इसका यह भी अर्थ है कि आप कमांड लाइन से वेबसर्वर के एपीसी कैश को साफ़ नहीं कर सकते हैं। कैश (उपयोगकर्ता कैश या ओपोड कैश) समाशोधन कोड आपके वेब सर्वर के माध्यम से निष्पादित किया जाना है। क्या यह php cli से खोल, या file_get_contents() से एक wget होगा - यह आपके स्वाद और परिस्थितियों पर निर्भर है।

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