2009-03-18 12 views
9

मेरे पास "जेनरेट वेबसाइट" कमांड है, जो कि सभी वेबसाइटों के माध्यम से एक संपूर्ण वेबसाइट को निश्चित HTML पृष्ठों में पुन: प्रकाशित करने के लिए पार्स करता है। यह एक भारी प्रक्रिया है, कम से कम मेरी स्थानीय मशीन पर (सीपीयू उगता है)। उत्पादन सर्वर पर अब तक कोई समस्या नहीं प्रतीत होती है लेकिन मैं इसे भविष्य के सबूत रखना चाहता हूं। इसलिए मैं भारी लिपि के प्रत्येक चरण के बीच php नींद() फ़ंक्शन का उपयोग करने पर विचार कर रहा हूं ताकि सर्वर के पास भारी चरणों के बीच "अपनी सांस पकड़ने" का समय हो।php नींद() का उपयोग करना सीपीयू लोड को भारी लिपि के साथ रखने के लिए एक अच्छा विचार है?

क्या यह एक अच्छा विचार है या यह बेकार होगा?

उत्तर

6

यदि आप php5 चला रहे हैं, और इसका उपयोग CGI (mod_php) मोड के बजाय किया जा रहा है, तो आप इसके बजाय proc_nice का उपयोग करने पर विचार कर सकते हैं।

यह "उत्पन्न वेबसाइट" कमांड को उतना सीपीयू जितना चाहें उतना उपयोग करने की अनुमति दे सकता है जबकि कोई भी साइट का उपयोग करने की कोशिश नहीं कर रहा है।

0

मुझे लगता है कि यह एक अच्छा विचार है। नींद का मतलब है कि एक अवधि होने तक टिकों की एक प्रतिवादी तुलना। नींद के संचालन पर सीपीयू पर ओवरहेड कम होना चाहिए।

0

यह इस बात पर निर्भर करता है कि आप इसे कितनी बार कॉल करेंगे और कितनी देर तक। आपको कम आउटपुट बनाम कम CPU उपयोग की आवश्यकता को संतुलित करने की आवश्यकता होगी।

संक्षेप में: हाँ, इससे मदद मिलेगी।

+0

इसे 6 बार, 3 सेकंड प्रत्येक कहा जाएगा। मुझे बिल्कुल त्वरित आउटपुट की आवश्यकता नहीं है। मैं इसे एजेक्स कॉल के माध्यम से शुरू करने की सोच रहा हूं, फिर एक और AJAXcall हर 1 9 सेकेंड में स्थिति पुनर्प्राप्त करें। इसे केवल "एचटीएमएल फाइल जेनरेट" या एक त्रुटि होने पर लॉग आउट करना चाहिए। – pixeline

1

मैं बस उत्पादन सर्वर पर ऐसा नहीं होता, कदम मैं पालन किया है से पहले:

  1. एक कम लागत पीएचपी सर्वर किराए - या एक उचित देव सर्वर सेटअप है कि उत्पादन प्रतिकृति मिल

  2. सभी गतिशील फ़ाइलें देव को कॉपी कर रहे हैं - वे भी न उत्पादन

  3. पर होने की जरूरत है HTMLizer स्क्रिप्ट चलाएं - कोई नींद बस इसे बाहर जला

  4. मान्य ouput और फिर rsync इस लाइव सर्वर से - लाइव निर्देशिका का बैकअप लेने आप इसे ऐसा करने के रूप में आप सुरक्षित रूप से वापस

वैसे भी गिर सकता है के बाद से कैशिंग/Memcaching लाने के लिए मैं ही था नहीं किया आया यह सब कुछ करें - ज़ेंड फ्रेमवर्क और ज़ेंड कैश का उपयोग करें और मूल रूप से आपके पास स्वचालित रूप से करने की आवश्यकता के अनुसार एक गतिशील समतुल्य है।

+0

आपके द्वारा प्रस्तावित विधि अच्छी लगती है। आरएसवाईएनसी पर विस्तार करने की देखभाल? जेन के बारे में: मैं गलत हो सकता हूं (मुझे ज़ेन नहीं पता), लेकिन मैं ज़ेंड कैश का उपयोग नहीं कर सकता क्योंकि मैं इन जेनरेट किए गए HTML टुकड़े को एक निश्चित HTML फ़ाइल नाम के माध्यम से AJAX के माध्यम से लोड करता हूं। तो मुझे एचटीएमएल फाइलों की सटीक स्थिति और फ़ाइल नाम को नियंत्रित करने की आवश्यकता है। – pixeline

+0

आरएसवाईएनसी http://samba.anu.edu.au/rsync/ rsync एक ओपन सोर्स यूटिलिटी है जो तेजी से वृद्धिशील फ़ाइल स्थानांतरण प्रदान करता है ज़ेंड एक PHP फ्रेमवर्क है - लेकिन वहां कैशिंग कक्षाएं हैं - यानी पीयर में। –

0

कार्य के आधार पर, मुझे नहीं लगता कि इससे आपकी मदद मिलेगी।

नींद केवल तब उपयोगी होगी जब आप निरंतर लूपिंग और उपयोगकर्ता इनपुट या ट्रिगर सिग्नल की प्रतीक्षा कर रहे हों।

इस मामले में, नौकरी पाने के लिए आप नींद कमांड को छोड़ सकते हैं, इस प्रकार कार्य समय को कम कर सकते हैं और सीपीयू समय को अन्य प्रक्रियाओं के लिए तेज़ी से मुक्त कर सकते हैं।

ऊपर दिए गए कुछ पोस्टर कोड अनुकूलन के साथ आपकी सहायता करने में सक्षम हो सकते हैं।

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

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