crontab समय निर्धारित कार्य घटक
विवरण
workerman/crontab
लिनक्स के crontab के समान है, लेकिन workerman/crontab
सेकंड-स्तरीय समय निर्धारित करने का समर्थन करता है।
समय विवरण:
0 1 2 3 4 5
| | | | | |
| | | | | +------ सप्ताह का दिन (0 - 6) (रविवार=0)
| | | | +------ महीना (1 - 12)
| | | +-------- महीने का दिन (1 - 31)
| | +---------- घंटा (0 - 23)
| +------------ मिनट (0 - 59)
+-------------- सेकंड (0-59)[छोड़ सकते हैं, यदि 0 स्थान नहीं है, तो न्यूनतम समय कण का स्तर मिनट है]
प्रोजेक्ट पत्ता
https://github.com/walkor/crontab
स्थापना
composer require workerman/crontab
उपयोग
कदम एक: नया प्रक्रम फ़ाइल app/process/Task.php
बनाएँ
<?php
namespace app\process;
use Workerman\Crontab\Crontab;
class Task
{
public function onWorkerStart()
{
// हर सेकंड एक बार निष्पादित करें
new Crontab('*/1 * * * * *', function(){
echo date('Y-m-d H:i:s')."\n";
});
// हर 5 सेकंड में एक बार निष्पादित करें
new Crontab('*/5 * * * * *', function(){
echo date('Y-m-d H:i:s')."\n";
});
// हर मिनट एक बार निष्पादित करें
new Crontab('0 */1 * * * *', function(){
echo date('Y-m-d H:i:s')."\n";
});
// हर 5 मिनट में एक बार निष्पादित करें
new Crontab('0 */5 * * * *', function(){
echo date('Y-m-d H:i:s')."\n";
});
// हर मिनट के पहले सेकंड में निष्पादित करें
new Crontab('1 * * * * *', function(){
echo date('Y-m-d H:i:s')."\n";
});
// हर दिन 7:50 बजे निष्पादित करें, ध्यान दें कि यहाँ सेकंड की स्थिति को छोड़ा गया है
new Crontab('50 7 * * *', function(){
echo date('Y-m-d H:i:s')."\n";
});
}
}
कदम दो: प्रक्रिया फ़ाइल को webman के प्रारंभ होने के साथ कॉन्फ़िगर करें
कॉन्फ़िगरेशन फ़ाइल config/process.php
खोलें, और निम्नलिखित कॉन्फ़िगरेशन जोड़ें
return [
....अन्य कॉन्फ़िगरेशन, यहाँ छोड़ा गया....
'task' => [
'handler' => app\process\Task::class
],
];
कदम तीन: webman को पुनरारंभ करें
ध्यान दें: समयबद्ध कार्य तुरंत निष्पादित नहीं होते, सभी समयबद्ध कार्य अगले मिनट में शुरू होने तक गिनती नहीं करते हैं
विवरण
crontab असिंक्रोनस नहीं है, उदाहरण के लिए यदि एक task प्रक्रिया में A और B नाम के दो टाइमर सेट किए जाते हैं, जो प्रत्येक सेकंड में एक बार कार्य निष्पादित करते हैं, लेकिन A कार्य को 10 सेकंड लगते हैं, तो B को A के समाप्त होने का इंतजार करना होगा, जिससे B के निष्पादन में देरी हो सकती है।
यदि व्यवसाय समय अंतराल के प्रति बहुत संवेदनशील है, तो संवेदनशील समयबद्ध कार्यों को अलग प्रक्रिया में चलाने के लिए रखना चाहिए, ताकि अन्य समयबद्ध कार्यों से प्रभावित न हों। उदाहरण के लिए config/process.php
में निम्नलिखित कॉन्फ़िगरेशन करें
return [
....अन्य कॉन्फ़िगरेशन, यहाँ छोड़ा गया....
'task1' => [
'handler' => process\Task1::class
],
'task2' => [
'handler' => process\Task2::class
],
];
संवेदनशील समयबद्ध कार्यों को process/Task1.php
में रखें और अन्य समयबद्ध कार्यों को process/Task2.php
में रखें।
config/process.php
कॉन्फ़िगरेशन के अधिक विवरण के लिए, कृपया कस्टम प्रक्रिया पर संदर्भ लें।