दिलचस्प पोस्ट
स्विच स्टेटमेंट में कई मामलों में उद्देश्य सी कोको आवेदन में नियमित अभिव्यक्ति Python में एक मानक-लायब्रेरी मॉड्यूल कैसे उपयोग करें, जब एक ही नाम के साथ एक स्थानीय मॉड्यूल है? फ़ॉर्म को पृष्ठ रिफ्रेश के बिना PHP के लिए AJAX पासिंग डेटा के साथ सबमिट करें वस्तु स्ट्रिंग को JSON में कनवर्ट करें JQuery अजाक्स फ़ंक्शन में डेटा के रूप में संपूर्ण फ़ॉर्म पास करें आपको स्क्रिप्ट नाम से पहले बाश में चलाने की आवश्यकता क्यों है? / (डॉट-स्लैश) आप एक EC2 आवृत्ति में स्वैप कैसे जोड़ सकते हैं? Exec () और eval () क्यों होना चाहिए? क्रेडिट कार्ड का विवरण संग्रहीत करना फायरबसे और अनुक्रमण / खोज आर में सभी कोष्ठक के अंदर जानकारी निकालें सी # में एईएस एन्क्रिप्शन का उपयोग करना कार्यक्रम में प्रोग्रामिंग आईफोन कैलेंडर में कस्टम इवेंट कस्टम चयनकर्ता के माध्यम से सूची दृश्य वस्तु पृष्ठभूमि

क्रॉन्टाब नौकरियां बनाने, संपादित करने और हटाने के लिए PHP का उपयोग करें?

क्या क्रंटैब नौकरियों को बनाने, संपादित करने और हटाने के लिए PHP का उपयोग करना संभव है?

मुझे पता है कि अपाचे उपयोगकर्ता की मौजूदा क्रॉन्टाब नौकरियां कैसे सूचीबद्ध करें:

$output = shell_exec('crontab -l'); echo $output; 

लेकिन PHP के साथ क्रॉन जॉब कैसे जोड़ सकता है? 'क्रॉन्टाब-ए' सिर्फ एक टेक्स्ट एडिटर खोलता है और आपको फ़ाइल सहेजने से पहले प्रविष्टियों को मैन्युअल रूप से संपादित करना होगा।

और PHP के साथ एक क्रॉन जॉब कैसे हटाना है? फिर आपको मैन्युअल रूप से 'crontab -e' द्वारा ऐसा करना होगा

इस तरह एक नौकरी स्ट्रिंग के साथ:

 $job = '0 */2 * * * /usr/bin/php5 /home/user1/work.php'; 

मैं PHP में क्रॉसबैब नौकरियों की सूची में इसे कैसे जोड़ूं?

वेब के समाधान से एकत्रित समाधान "क्रॉन्टाब नौकरियां बनाने, संपादित करने और हटाने के लिए PHP का उपयोग करें?"

क्रॉन्टाब कमांड उपयोग

 usage: crontab [-u user] file crontab [-u user] [ -e | -l | -r ] (default operation is replace, per 1003.2) -e (edit user's crontab) -l (list user's crontab) -r (delete user's crontab) -i (prompt before deleting user's crontab) 

इसलिए,

 $output = shell_exec('crontab -l'); file_put_contents('/tmp/crontab.txt', $output.'* * * * * NEW_CRON'.PHP_EOL); echo exec('crontab /tmp/crontab.txt'); 

उपरोक्त दोनों के लिए इस्तेमाल किया जा सकता है और संपादित करें / अनुलग्नक प्रदान करता है ताकि उपयोगकर्ता को पर्याप्त फाइल लिखने की अनुमति हो।

नौकरियों को हटाने के लिए:

 echo exec('crontab -r'); 

साथ ही, ध्यान रखें कि अपाचे एक विशिष्ट उपयोगकर्ता के रूप में चल रहा है और वह आम तौर पर जड़ नहीं है, जिसका मतलब है कि क्रॉन जॉब्स को केवल अपाचे यूजर के लिए बदल दिया जा सकता है, जब तक कि अपाचे उपयोगकर्ता को crontab -u विशेषाधिकार नहीं दिया जाता।

निजी और व्यक्तिगत कार्यों के लिए क्रॉन फाइलों का प्रबंधन करने के लिए हमने हाल ही में एक मिनी प्रोजेक्ट (PHP> = 5.3) तैयार किया है। यह टूल क्रॉन फाइलों को जोड़ता है और प्रबंधित करता है ताकि आप उनका उपयोग कर सकें, उदाहरण के लिए प्रति परियोजना यूनिट टेस्ट उपलब्ध हैं 🙂

कमांड लाइन से नमूना:

 bin/cronman --enable /var/www/myproject/.cronfile --user www-data 

एपीआई से नमूना:

 use php\manager\crontab\CrontabManager; $crontab = new CrontabManager(); $crontab->enableOrUpdate('/tmp/my/crontab.txt'); $crontab->save(); 

एपीआई से अलग-अलग कार्य प्रबंधित करना:

 use php\manager\crontab\CrontabManager; $crontab = new CrontabManager(); $job = $crontab->newJob(); $job->on('* * * * *'); $job->onMinute('20-30')->doJob("echo foo"); $crontab->add($job); $job->onMinute('35-40')->doJob("echo bar"); $crontab->add($job); $crontab->save(); 

github: php-crontab-manager

एक क्रोनबोज़ की जांच करें

 function cronjob_exists($command){ $cronjob_exists=false; exec('crontab -l', $crontab); if(isset($crontab)&&is_array($crontab)){ $crontab = array_flip($crontab); if(isset($crontab[$command])){ $cronjob_exists=true; } } return $cronjob_exists; } 

एक क्रोन जॉब जोड़ें

 function append_cronjob($command){ if(is_string($command)&&!empty($command)&&cronjob_exists($command)===FALSE){ //add job to crontab exec('echo -e "`crontab -l`\n'.$command.'" | crontab -', $output); } return $output; } 

क्रॉन्टाब को निकालें

 exec('crontab -r', $crontab); 

उदाहरण

 exec('crontab -r', $crontab); append_cronjob('* * * * * curl -s http://localhost/cron/test1.php'); append_cronjob('* * * * * curl -s http://localhost/cron/test2.php'); append_cronjob('* * * * * curl -s http://localhost/cron/test3.php'); 

आप EDITOR परिवेश चर को ed तरह कुछ ओवरराइड करने की कोशिश कर सकते हैं जो मानक इनपुट पर कमांड का अनुक्रम ले सकता है।

यह करना चाहिए

 shell_exec("crontab -l | { cat; echo '*/1 * * * * command'; } |crontab -"); 

यह निर्भर करता है कि आप अपने क्रंटैब को कहाँ स्टोर करते हैं:

 shell_exec('echo "'. $job .'" >> crontab'); 

अच्छा …
एक विशिष्ट क्रॉन नौकरी (परीक्षण) को हटाने के लिए इसे आज़माएं

 <?php $output = shell_exec('crontab -l'); ?> <?php $cron_file = "/tmp/crontab.txt"; ?> <!-- Execute script when form is submitted --> <?php if(isset($_POST['add_cron'])) { ?> <!-- Add new cron job --> <?php if(!empty($_POST['add_cron'])) { ?> <?php file_put_contents($cron_file, $output.$_POST['add_cron'].PHP_EOL); ?> <?php } ?> <!-- Remove cron job --> <?php if(!empty($_POST['remove_cron'])) { ?> <?php $remove_cron = str_replace($_POST['remove_cron']."\n", "", $output); ?> <?php file_put_contents($cron_file, $remove_cron.PHP_EOL); ?> <?php } ?> <!-- Remove all cron jobs --> <?php if(isset($_POST['remove_all_cron'])) { ?> <?php echo exec("crontab -r"); ?> <?php } else { ?> <?php echo exec("crontab $cron_file"); ?> <?php } ?> <!-- Reload page to get updated cron jobs --> <?php $uri = $_SERVER['REQUEST_URI']; ?> <?php header("Location: $uri"); ?> <?php exit; ?> <?php } ?> <b>Current Cron Jobs:</b><br> <?php echo nl2br($output); ?> <h2>Add or Remove Cron Job</h2> <form method="post" action="<?php $_SERVER['REQUEST_URI']; ?>"> <b>Add New Cron Job:</b><br> <input type="text" name="add_cron" size="100" placeholder="eg: * * * * * /usr/local/bin/php -q /home/username/public_html/my_cron.php"><br> <b>Remove Cron Job:</b><br> <input type="text" name="remove_cron" size="100" placeholder="eg: * * * * * /usr/local/bin/php -q /home/username/public_html/my_cron.php"><br> <input type="checkbox" name="remove_all_cron" value="1"> Remove all cron jobs?<br> <input type="submit"><br> </form> 

मैंने नीचे दिए गए समाधान की कोशिश की

 class Crontab { // In this class, array instead of string would be the standard input / output format. // Legacy way to add a job: // $output = shell_exec('(crontab -l; echo "'.$job.'") | crontab -'); static private function stringToArray($jobs = '') { $array = explode("\r\n", trim($jobs)); // trim() gets rid of the last \r\n foreach ($array as $key => $item) { if ($item == '') { unset($array[$key]); } } return $array; } static private function arrayToString($jobs = array()) { $string = implode("\r\n", $jobs); return $string; } static public function getJobs() { $output = shell_exec('crontab -l'); return self::stringToArray($output); } static public function saveJobs($jobs = array()) { $output = shell_exec('echo "'.self::arrayToString($jobs).'" | crontab -'); return $output; } static public function doesJobExist($job = '') { $jobs = self::getJobs(); if (in_array($job, $jobs)) { return true; } else { return false; } } static public function addJob($job = '') { if (self::doesJobExist($job)) { return false; } else { $jobs = self::getJobs(); $jobs[] = $job; return self::saveJobs($jobs); } } static public function removeJob($job = '') { if (self::doesJobExist($job)) { $jobs = self::getJobs(); unset($jobs[array_search($job, $jobs)]); return self::saveJobs($jobs); } else { return false; } } 

}

क्रेडिट्स: क्रॉनटैब क्लास को जोड़ने, संपादित करें और क्रोन जॉब्स निकालें

आप अपनी फ़ाइल को /etc/cron.d/ को क्रोन प्रारूप में रख सकते हैं। फ़ाइलनाम के लिए कुछ अनूठे उपसर्ग जोड़ें स्क्रिप्ट-विशिष्ट क्रॉन कार्यसूची को सूचीबद्ध करने के लिए केवल एक अद्वितीय उपसर्ग के साथ फाइलों की सूची के साथ काम करें। फ़ाइल को तब हटाएं जब आप नौकरी को अक्षम करना चाहते हैं।

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

अधिक जानकारी के लिए, क्रॉन्टाब-ए के बिना क्रॉसटाब देखें।

क्रॉन्टाब के बजाय आप Google के ऐप इंजन कार्य कतार का उपयोग भी कर सकते हैं। इसमें एक उदार मुक्त कोटा है, तेज़, स्केलेबल, संशोधनीय है।