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
কনফিগারেশন ব্যাখ্যার জন্য, কাস্টম প্রক্রিয়া দেখুন।