2011-08-08 6 views
5

क्या हम PHP स्क्रिप्ट के माध्यम से क्रॉन जॉब के समय अंतराल को कॉन्फ़िगर कर सकते हैं, ताकि समय अंतराल मैन्युअल रूप से सेट नहीं किया जाना चाहिए, लेकिन एक PHP स्क्रिप्ट के माध्यम से, चाहे वह डेटाबेस से निश्चित अंतराल लेता है या निश्चित (लेकिन PHP कोड के भीतर से)।
अग्रिम धन्यवादक्या हम PHP स्क्रिप्ट के माध्यम से क्रॉन जॉब के समय अंतराल को कॉन्फ़िगर कर सकते हैं?

उत्तर

3

मुझे लगता है कि आपके एप्लिकेशन को cronjob की बजाय घटनाओं की आवृत्ति को नियंत्रित करने के लिए बेहतर है। Cronjob हर मिनट अपने आवेदन की एक निश्चित कार्रवाई चलाने दें। उदाहरण के लिए कार्रवाई cronjobs नामक डेटाबेस तालिका की जांच करती है और आवृत्ति संख्या या टाइमस्टैम्प द्वारा चलाने के लिए चिह्नित नौकरियों को चलाती है।

यदि आप इसे ऐसा करते हैं, तो आप हर जगह से प्रोग्रामेटिक रूप से नई नौकरियां जोड़ सकते हैं, उदा। एक cronjob इंटरफ़ेस के माध्यम से। समाधान को बनाए रखना, परीक्षण करना और दस्तावेज करना आसान है।

2

दो तरीके हैं। या तो, वांछित मूल्य के हर परिवर्तन पर क्रोंटैब को दोबारा बनाएं या क्रॉन नौकरी नियमित रूप से आग लगें, उदा। हर मिनट, और स्क्रिप्ट के भीतर से शुरू की स्थिति का परीक्षण करें।

0

यदि पर्याप्त सर्वर विशेषाधिकार हैं, तो आपको system() का उपयोग करके, अपनी PHP स्क्रिप्ट से सिस्टम स्तर कॉल का उपयोग करके ऐसा करने में सक्षम होना चाहिए।

0

ऐसा करने के लिए सबसे अच्छा, शायद एक PHP स्क्रिप्ट लिखकर होगा जो crontab -file (और ऐसा करने के लिए पर्याप्त विशेषाधिकारों के साथ आपकी स्क्रिप्ट चला रहा है) लिखने में सक्षम है।

यह site एक बहुत अच्छा ट्यूटोरियल प्रदान करता है।

हालांकि, cron पर निर्भरता आपके कोड को प्लेटफ़ॉर्म पर निर्भर करेगी जो cron का समर्थन करती है। इस प्रकार एक और समाधान PHP में समय-निष्पादन-तर्क को लागू करना होगा (यानी कोड लूप करें, और समय स्वयं जांचें)।

Scheduler -इंटरफेस बनाकर आप ऊपर दिए गए दो समाधानों को जोड़ सकते हैं, जो कि आप एक स्क्रिप्ट दे सकते हैं, और यह सुनिश्चित करेगा कि यह उचित समय पर निष्पादित हो। इस तरह से आप यह लिनक्स पर cron का उपयोग कर, लेकिन विंडोज पर किसी अन्य तरीके से लागू कर सकते हैं:

interface Scheduler { 
    function schedule($script); 
} 
class CronScheduler { 
    function schedule($script) { 
    append_cronjob($script); 
    } 
} 

हालांकि, मैं इसे यहाँ अति हो सकता है।

0

यदि आप ऐसा करना चाहते हैं तो मैं आपको संदेश कतार Beanstalkd का उपयोग करने का सुझाव दूंगा। यह देरी से प्रोग्रामेटिक डाल सकता है और बहुत तेज़ है। मैं सलाह देता हूं कि बीनस्टॉकड से बात करने के लिए pheanstalk का उपयोग करें।