crontab समय-सारणी कार्य संयंत्र

workerman/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

उपयोग

चरण 1: प्रक्रिया फ़ाइल process/Task.php नई बनाएं

<?php
namespace 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";
        });

    }
}

चरण 2: वेबमैन के साथ प्रक्रिया फ़ाइल कॉन्फ़िगर करें

config/process.php फ़ाइल खोलें, निम्नलिखित कॉन्फ़िगरेशन जोड़ें

return [
    ....अन्य कॉन्फ़िगरेशन, यहाँ छोड़ दिया....

    'task'  => [
        'handler'  => process\Task::class
    ],
];

चरण 3: वेबमैन को पुनः आरंभ करें

ध्यान दें: समय-सारणी कार्यों को तुरंत नहीं चलाया जाएगा, सभी समय-सारणी के कार्य अगले मिनट में ही शुरू होंगे

विवरण

crontab असमंग्रस्त नहीं है, उदाहरण के लिए, एक कार्य प्रक्रिया में 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 विवरण कॉन्फ़िगरेशन के लिए कृपया देखें कस्टम प्रक्रिया