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

        // প্রতি ৫ সেকেন্ডে একবার কার্যকর
        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";
        });

        // প্রতি ৫ মিনিটে একবার কার্যকর
        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";
        });

        // প্রতিদিন সকালের ৭:৫০ এ কার্যকর, লক্ষ্য করুন এখানে সেকেন্ডের স্থান বাদ দেওয়া হয়েছে
        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 কনফিগারেশন ব্যাখ্যার জন্য, কাস্টম প্রক্রিয়া দেখুন।