2009-09-30 13 views
13

मैंने एपीसी के बारे में पढ़ा है कि यह कई php फ़ाइल साइटों को गति देता है। तो मेरे पास PHP में यह विशेष प्रोजेक्ट है जिसमें कई फाइलें हैं और मुझे पता चलता है कि requ_once और केवल क्लास परिभाषाओं को पार्स करना (उन्हें निष्पादित किए बिना) अधिकतर समय लगता है।एपीसी (PHP कैश) कैसे काम करें?

इसलिए मैंने अपने CentOS 5 सर्वर पर एपीसी स्थापित किया है। मैं अपने वेब सर्वर पर apc.php चले गए और यह

Hits: 1 (50.0%) 
Misses: 1 (50.0%) 

Cached Files 1 (281.1 KBytes) 

को प्रदर्शित करता है और मैं इतने पर वेबसाइट पर जा सकते हैं और उपपृष्ठ बदल सकते हैं और, और apc.php अभी भी केवल एक ही कैश की गई फ़ाइल से पता चलता ??

और phpinfo में() यह पता चलता है कि:

एपीसी समर्थन सक्षम

मैं क्या करना है पता नहीं है। क्या एपीसी काम कर रहा है (जैसे phpinfo() sais) या है ना? मेरी वेबसाइट पर कुछ पेज ब्राउज़ करने के बाद केवल एक कैश की गई फ़ाइल बहुत अधिक नहीं है।

और त्रुटियों का निदान कैसे करें और यह सुनिश्चित करें कि एपीसी काम करता है? मैं ब्राउज़ कर चुके हैं

apc.mmap_file_mask /tmp/apc.QnLqNf /tmp/apc.QnLqNf

निर्देशिका/tmp लेकिन जैसे कि यह phpinfo में कहा गया है मैं वहाँ एपीसी की किसी भी फाइल की जरूरत नहीं है होना चाहिए

कृपया मुझे यह जांचने में सहायता करें कि क्या एपीसी काम कर रहा है और यदि नहीं, तो समस्या क्या हो सकती है।

+0

अपने एपीसी config क्या है? विशेष रूप से जांचें: apc.include_once_override = 1 जो एपीसी के साथ किसी समस्या को हल करता है और मानक में php – Neel

+0

में कोड शामिल/पुन: उपयोग कोड आप किस प्रकार का PHP-SAPI और सर्वर उपयोग कर रहे हैं? अपाचे + mod_php, अपाचे + mod_fcgi/mod_fastcgi या कुछ Lighttpd + fastcgi? –

+0

मुझे एक ही समस्या है। अपाचे + mod_php, और apc.php केवल 1 कैश की गई फ़ाइल की रिपोर्ट कर रहा है (जो मुझे संदेह है कि apc.php फ़ाइल स्वयं है)। क्या अभी तक कोई खुलासा हुआ है? –

उत्तर

8

APC दो तरीकों से किया जा सकता है:

  1. एक opcode कैश के रूप में। आपके पास समर्थन सक्षम है इसलिए यह काम कर रहा है; और
  2. एक सामान्य कैश के रूप में। इसके लिए आपको API का स्पष्ट रूप से उपयोग करना होगा।

(1) मुख्य लाभ है। यह "संकलन" स्क्रिप्ट के ऑपोड परिणामों को संग्रहीत करके स्क्रिप्ट निष्पादन के लिए समय कम कर देता है।

यह काम कर रहा, installation instructions से के लिए के रूप में:

नोट: Windows पर, एपीसी एक अस्थायी पथ का अस्तित्व है, और वेब सर्वर द्वारा लिखने योग्य होना जरूरत है। यह टीएमपी, टीईएमपी, उपयोगकर्ताप्रोफाइल पर्यावरण चर में ऑर्डर करता है और अंततः विन्डोज़ निर्देशिका की कोशिश करता है यदि उनमें से कोई भी सेट नहीं है।

तो आपको CentOS पर इसकी आवश्यकता नहीं है (या कोई गतिविधि देखें)।

कहा जा रहा है, आवश्यकता/शामिल requ_once/include_once/autoload से बेहतर हैं, लेकिन यह केवल तभी महत्वपूर्ण होगा जब आप सैकड़ों फाइलों के साथ ऐसा कर रहे हों।

+5

ठीक है, मैं समझता हूं। लेकिन क्या यह वास्तव में काम करता है अगर परीक्षण करने का कोई तरीका है? जैसा कि मैंने एपीसी.एफ़पी को केवल एक हिट और मिस दिखाया है और ऐसा लगता है कि यह काम नहीं करता है। –

+2

मैं इसे दूसरा करता हूं। क्या कोई सबूत है (गति वृद्धि के अलावा) जो आपको बता सकता है कि यह वास्तव में काम कर रहा है? –

+2

मैं एक ही दुविधा में हूं, apc.php कैश में केवल एक फ़ाइल दिखाता है जो apc.php है। मैं उलझन में हूं :( – Kumar

2

क्या आपकी साइट मूल रूप से एक PHP फ़ाइल है जिसमें उसके बाद अन्य फ़ाइलें शामिल हैं या आवश्यकता है? यह सिर्फ एक फ़ाइल के रूप में पंजीकृत हो सकता है।साथ ही, जहां तक ​​मुझे पता है, सशर्त शामिल/तर्क की आवश्यकता है, उम्मीद के रूप में कैश नहीं हो सकता है, हालांकि यह सिर्फ सुनवाई हो सकती है!

+0

मेरे पास सशर्त नहीं हैं। मेरे पास 4 फाइलें हैं जिनमें 3 लाइब्रेरी फाइलें शामिल हैं। मैं यह सुनिश्चित करना चाहता हूं कि एपीसी काम करता है, क्योंकि एपीसी.पीएचपी इसे निष्क्रिय नहीं करता है। –

1

क्या आपने थर्ड लॉग फाइलों की जांच की थी? /var/log/apache2/error.log पर एक नज़र डालें या फिर इसे आपके वितरण के तहत नामित करें।

साथ ही, जांच कितने php फ़ाइलें एपीसी कैश द्वारा कैश कर रहे हैं ..

एपीसी के बारे में सुनिश्चित नहीं हैं कि उन पर 2-3 php फ़ाइलें, बिंदु thebrowser बनाने की कोशिश, और फिर, लेकिन मैं सलाह देते हैं eAccelerator (http://eaccelerator.net/)। मैंने कुछ समय पहले इसका परीक्षण किया है और वास्तव में एक फर्क पड़ता है।

1

एपीसी वास्तव में प्रोसेस के बीच कैश साझा नहीं करता है। अपने PHP-Process को फोर्क चाइल्ड को कॉन्फ़िगर करने का प्रयास करें और मास्टर PHP-Process को चलने दें।

देखें:। How to share APC cache between several PHP processes when running under FastCGI?

0

http://www.litespeedtech.com/support/forum/showthread.php?t=3761

"एपीसी पीएचपी suEXEC साथ अच्छी तरह से काम नहीं करता है के रूप में प्रत्येक पीएचपी प्रक्रिया का अपना कैश स्मृति, का उपयोग करेगा नहीं साझा

आप की कोशिश करनी चाहिए eAccelerator +/dev/shm अगर आपको PHP suEXEC का उपयोग करने की आवश्यकता है। "

अच्छी तरह से मिला एक ही समस्या, ऐसा लगता है पीएचपी suEXEC + एपीसी समस्या

1

एपीसी 3.1.5dev शाखा में, a new option was introduced आप opcode कैश निष्क्रिय करने के लिए अनुमति देता है। यह डिफ़ॉल्ट रूप से बंद हो रहा प्रतीत होता है।

अपने एपीसी कॉन्फ़िग फ़ाइल को यह जोड़ने का प्रयास करें:

apc.enable_opcode_cache=1 
संबंधित मुद्दे