2011-02-09 10 views
5

मैं PHP परियोजना में एक सरल क्रॉन की तरह प्रबंधन चाहते वहाँ कुछ चीजें मैं करना चाहते हैं कर रहे हैं:PHP प्रोजेक्ट में सरल क्रॉन जॉब प्रबंधन के लिए मुझे क्या उपयोग करना चाहिए?

  1. php नौकरी कार्यकर्ता सादे स्क्रिप्ट है कि कुछ subdir में परियोजना निर्देशिका के अंदर
  2. वहाँ रखा गया है प्रोजेक्ट रूट में/cron/daily,/cron/मासिक ... आदि की तरह उप -्री है जिसमें सभी श्रमिक
  3. प्रत्येक कार्यकर्ता के साथ क्रोंटैब के साथ गड़बड़ करने की आवश्यकता नहीं है।
  4. सभी स्क्रिप्ट समान आवृत्ति वाले रन-पार्ट्स जैसे कुछ चलाए जाते हैं, और उनके संबंधित आउटपुट को अलग-अलग फ़ाइलों में लॉग किया जाता है जैसे /var/log/projectname/cron/daily/somescript.log
  5. बहुत अच्छा होगा/क्रॉन/डेमॉन स्क्रिप्ट कि हमेशा के लिए (प्रतिमिनट) चलाने की जानी चाहिए युक्त dir लेकिन कोई 1 से अधिक उदाहरण

मैं एक परियोजना में समय-निर्धारण प्रणाली उस तरह के साथ अनुभव था और यह प्रिय था। यह कई साफ-सुथरे चीजें प्रदान करता है:

  • नौकरियां प्रोजेक्ट स्क्रिप्ट हैं और प्रोजेक्ट डीआईआर में रहते हैं, जो गिट द्वारा ट्रैक की जाती हैं।
  • क्रोंटैब मैसेजिंग की कोई आवश्यकता नहीं है।
  • लॉग सॉर्ट किए गए हैं।
  • डिमन्स बनाने के लिए आसान हैं।

मैं प्रोजेक्ट/क्रॉन उपनिवेशियों पर बस/बिन/रन-पार्ट्स का उपयोग करता हूं, लेकिन जैसा कि मैं चाहता था लॉग को विभाजित नहीं करता था। और विभाजित लॉगिंग बहुत अच्छी सुविधा है।

तो, मैंने सोचा कि इस तरह के सिस्टम कई बार पहले बनाए गए थे, क्या PHP परियोजना के लिए समाधान का उपयोग करने के लिए कोई तैयार है? असल में यह कुछ और स्मार्ट रन-पार्ट्स समकक्ष है। बस इसे एक बार फिर लिखना चाहिए?

पीएस गियरमैन जैसे कई और नौकरी-कतार विशिष्ट समाधान हैं। वे महान हैं, लेकिन यह quesion परियोजना क्रॉन नौकरियों हल्के समाधान के बारे में है।

+0

के लिए "छद्म क्रॉन" एक Google खोज करते हैं, वहाँ बहुत सारे मुफ्त स्क्रिप्ट हैं जिन्हें अनुकूलित किया जा सकता है। लेकिन पूरी तरह से, मैं इसे खुद लिखूंगा; मैंने इसे पहले किया है और यह मुश्किल नहीं है। – Benubird

+0

धन्यवाद, छद्म-क्रॉन दिलचस्प चीजें हैं, लेकिन वे बहुत सुविधाजनक नहीं हैं: नौकरियां क्रॉन नौकरियां नहीं हैं, शेड्यूल को याद किया जा सकता है, और आपको छद्म-क्रोंटैब लिखना चाहिए। कठिनाई के लिए - हाँ, यह इतना मुश्किल नहीं है, असल में मुझे बस एक एहसास है कि मुझे कुछ महान समाधान नहीं पता हो सकता है जिसे मैं फिर से लिखने जा रहा हूं और – evgenyq

+0

को फिर से लिखने के लिए उत्तर दे रहा हूं? – tobyS

उत्तर

0

Periodic is a CRON compatible task manager PHP में लिखा गया। इसे काम करने के लिए जैसे आप इसे चाहते हैं, अभी भी कुछ काम किया जाएगा, लेकिन यह आपको एक अच्छा आधार देना चाहिए।

+0

इस के पीछे कंपनी की तरह दिखता है, आर्बिट चली गई है। – Richard

+0

आप अभी भी गितब https://github.com/Arbitracker/Periodic पर आवधिक स्रोत पा सकते हैं। – tobyS

2

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

मैंने हाल ही में हमारे PHP नौकरियों को व्यवस्थित करने के तरीके को दस्तावेज किया ताकि हम आसानी से सीएलआई से हमारे आवेदन ढांचे का लाभ उठा सकें, इस तरह जेनकिंस नौकरियों के साथ इंटरफेस।

http://blog.shupp.org/2011/03/15/organizing-php-batch-jobs/

-1

उपयोग इस समारोह:

यहाँ जेनकींस या हडसन साथ प्रयोग के लिए पीएचपी बैच नौकरियों के आयोजन के बारे में पोस्ट

function parse_crontab($time, $crontab) 
     {$time=explode(' ', date('i G j n w', strtotime($time))); 
      $crontab=explode(' ', $crontab); 
      foreach ($crontab as $k=>&$v) 
        {$v=explode(',', $v); 
        foreach ($v as &$v1) 
          {$v1=preg_replace(array('/^\*$/', '/^\d+$/', '/^(\d+)\-(\d+)$/', '/^\*\/(\d+)$/'), 
              array('true', $time[$k].'===\0', '(\1<='.$time[$k].' and '.$time[$k].'<=\2)', $time[$k].'%\1===0'), 
              $v1 
              ); 
          } 
        $v='('.implode(' or ', $v).')'; 
        } 
      $crontab=implode(' and ', $crontab); 
      return eval('return '.$crontab.';'); 
     } 
var_export(parse_crontab('2011-05-04 02:08:03', '*/2,3-5,9 2 3-5 */2 *')); 
var_export(parse_crontab('2011-05-04 02:08:03', '*/8 */2 */4 */5 *')); 
+0

$ समय और $ crontab क्या हैं? –

+0

@ भार्गव, नीचे दिए गए दो उदाहरण देखें – diyism

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