2011-02-13 14 views
25

के लिए उल्टा apc_store() का उपयोग करने के दौरान मुझे यह त्रुटि मिल रही है। मैंने इसे गुमराह किया और देखा कि यह एपीसी टाइमबॉम्ब बग था और कुछ सुधारों को देखा जो apc.slam_defense = Off; को php.ini में जोड़ने का सुझाव देते थे।PHP एपीसी संभावित कैश स्लैम कुंजी

मुझे यह जानने की ज़रूरत है कि यह प्रोग्रामिंग त्रुटि के कारण हुआ है, और यदि हां, तो इसे कैसे ठीक किया जाए।

if ($data = apc_fetch("foo")) { 
    $an_array = $data; 
} else { 
    /* couple of lines */ 

    apc_store("circles", $an_array); // This is where I get the error 
} 

यह स्क्रिप्ट मेरे तैनात प्रणाली में अक्सर कहा जाएगा:

इस कोड खंड है।

मुझे आशा है कि मैं पर्याप्त जानकारी प्रदान की है

अग्रिम धन्यवाद

उत्तर

15

एपीसी 3.1.3 के बाद से, ऐसा लगता है कि वहाँ एक बग (http://pecl.php.net/bugs/bug.php?id=16814), चेतावनी है जब स्लैम रक्षा पर पर है बना रहे हैं और जब आप एक कुंजी लिखने का प्रयास करते हैं जो पहले से मौजूद है।
अभी तक तय नहीं किया गया प्रतीत होता है।

28

apc.write_lock = 1 और apc.slam_defense = 0php.ini में समस्या को ठीक करना चाहिए।

+0

साथ एपीसी अद्यतन कर सकते हैं। –

+3

स्पष्टीकरण: apc.write_lock प्रभावी रूप से slam_defence को बहिष्कृत करता है। – marcovtwout

2

ये निर्देश PHP के स्थापित होने के आधार पर भिन्न होंगे।

लेकिन, अपनी /etc/php5/cgi/conf.d/extensions.ini फ़ाइल (या apc.ini, या php.ini) के बाद आप को शामिल किया है में अपने extension=apc.so आप स्लैम रक्षा

उदाहरण के लिए निष्क्रिय कर सकते हैं, यह मेरा विन्यास है कि मैं का उपयोग करें। एपीसी की

[apc] 
apc.enabled=1 
apc.shm_size=48M 
apc.num_files_hint=10000 
apc.user_entries_hint=10000 
apc.max_file_size=5M 
apc.stat=1 
apc.enable_cli=On 
apc.write_lock = 1 
apc.slam_defense = 0 # <----- This is the Important Setting 
5

अंतिम संस्करण समस्या को हल करने लगता है, आप PECL

pecl upgrade apc 
मेरे लिए समस्या को ठीक किया
संबंधित मुद्दे