1. পরিচিতি

Golang cron লাইব্রেরি একটি শক্তিশালী এবং ব্যবহার করা সহজ টুল, যা নির্ধারিত সময় বা মধ্যবর্তীতায় কাজ সমূহের অনুসূচী করার জন্য অনুমতি দেয়। এটি UNIX cron সেবা অনুসারে মডেলযুক্ত কিন্তু এটি একটি স্বাধীন লাইব্রেরি হিসেবে সম্পাদন করা হয়, যা জি.ও. অ্যাপ্লিকেশনে সংযোগ করা যেতে পারে। cron লাইব্রেরি সময়-ভিত্তিক অনুসূচী নিয়মন করে, আপনাকে অনুষ্ঠান করা দরকারী কাজে মনোনিবেশ করে।

2. উদাহরণ

ক্রম লাইব্রেরি ইনস্টলেশন

আপনার প্রজেক্টে cron লাইব্রেরি ব্যবহার করতে শুরু করতে, আপনাকে প্রথমে নিম্নলিখিত কমান্ডটি ব্যবহার করে আগে ইনস্টল করতে হবে:

go get github.com/robfig/cron/[email protected]

ক্রম প্যাকেজ আমদানি

ইনস্টল করার পরে, আপনি তা নিম্নলিখিতভাবে আপনার গো প্রোগ্রামে আমদানি করতে পারেন:

import "github.com/robfig/cron/v3"

নিচে কিভাবে একটি ক্রম কাজ সেট আপ করতে হয় তার একটি সাধারণ উদাহরণ দেওয়া হল:

package main

import (
    "fmt"
    "github.com/robfig/cron/v3"
)

func main() {
	c := cron.New()
	c.AddFunc("0 30 * * * *", func() { fmt.Println("প্রতি ঘণ্টা মিনিটের মধ্যে") })
	c.AddFunc("@hourly",      func() { fmt.Println("প্রতি ঘণ্টা") })
	c.AddFunc("@every 1h30m", func() { fmt.Println("প্রতি মিনিট") })
	c.Start()
	..
	// ফাংশন তাদের নিজেদের গোরুটিনে অভিভাবকভাবে আহুতি
	...
	// ফাংশনগুলি মোডিফাই পাওয়া যেতে পারে সার্কুলে ক্রমে
	c.AddFunc("@daily", func() { fmt.Println("প্রতিদিন") })
	..
	..
	c.Stop()  // সময়সূচীবদ্ধককে বন্ধ করুন (ইতিমধ্যে চলছে যে কোনও কাজ বন্ধ করে না)
}

3. CRON অভিব্যক্তি ফর্ম্যাট

একটি cron অভিব্যক্তি 6 টি স্পেস-বিচ্ছিন্ন ফিল্ড ব্যবহার করে সময়ের সেট প্রতিনিধিত্ব করে।

ফিল্ডের নাম অবশ্যই? অনুমোদিত মান অনুমোদিত বিশেষ অক্ষর
সেকেন্ড হ্যাঁ 0-59 * / , -
মিনিট হ্যাঁ 0-59 * / , -
ঘন্টা হ্যাঁ 0-23 * / , -
মাসের দিন হ্যাঁ 1-31 * / , - ?
মাস হ্যাঁ 1-12 বা JAN-DEC * / , -
সপ্তাহের দিন হ্যাঁ 0-6 বা SUN-SAT * / , - ?

4. CRON অভিব্যক্তিতে বিশেষ অক্ষর

  • এস্টেরিস্ক ( * ) এস্টেরিস্কটি প্রাপ্ত ফিল্ডের জন্য সমস্ত সম্ভাব্য মানগুলি প্রতিনিধিত্ব করে। উদাহরণস্বরূপ, মিনিট ফিল্ডে একটি এস্টেরিস্ক প্রতিমিনিট বোঝায়।
  • স্ল্যাশ ( / ) স্ল্যাশ অক্ষরটি জনাতে ব্যবহৃত হয় অধিকবার। উদাহরণস্বরূপ, সেকেন্ড ফিল্ডে "*/15" মানে হলো শূন্য থেকে শুরু করে প্রতি 15 সেকেন্ড।
  • কমা ( , ) কমাটি বিভিন্ন পৃথক মান তালিকাভুক্ত করার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, সপ্তাহের দিন ফিল্ডে "MON, WED, FRI" যেটা বোঝায় যে কাজটি সোমবার, বুধবার এবং শুক্রবার চালিত হবে।
  • হাইফেন ( - ) হাইফেনটি মানের সীমা প্রকাশ করে। ঘন্টা ফিল্ডে "9-17" যা মানে যে 9 টা সকাল থেকে 5 টা অপরাহ্ণ পর্যন্ত প্রতি ঘণ্টা।
  • প্রশ্ন চিহ্ন ( ? ) প্রশ্ন চিহ্নটি দিন ও সপ্তাহের দিন ফিল্ডে 'কোনও নির্দিষ্ট মান' প্রকাশ করতে ব্যবহৃত হয়, যা আপনার যখন আপনি একটি মান নির্দিষ্ট করতে প্রয়োজন এবং অন্যটি না হতে পারে।

5. পূর্বনির্ধারিত সময় সূচী

পূর্বনির্ধারিত সময় সূচীর বিস্তারিত ব্যাখ্যা, একটি টেবিল নমুনার মাধ্যমে ডিসপ্লে করা হয়:

এন্ট্রি বর্ণনা সমতুল্য হল
@yearly (বা @annually) বারবার বারবার, অর্ধরাত্রি, জানুয়ারি 1 0 0 0 1 1 *
@monthly মাসিক, অর্ধরাত্রি, মাসের প্রথম 0 0 0 1 * *
@weekly সাপ্তাহিক, অর্ধরাত্রি, শনি/রবি মধ্যে 0 0 0 * * 0
@daily (বা @midnight) প্রতিদিন, অর্ধরাত্রি 0 0 0 * * *
@hourly প্রতি ঘণ্টা, ঘণ্টা শুরু 0 0 * * * *

6. বিন্যাস এবং ধৃতিমূল পর্যায়ের সময়প্রসারণ

ধৃতিমূল পর্যায়ে কাজের অনুসূচী করা আরও একটি শক্তিশালী বৈশিষ্ট্য যা cron লাইব্রেরির। উদাহরণস্বরূপ, প্রতি 2 ঘন্টা চালিত হওয়া কাজ সময়সূচি করতে:

c.AddFunc("@every 2h", func() { fmt.Println("কাজটি প্রতি দুটি ঘন্টায় চালিত হয়") })

7. সময় অঞ্চল এবং কাজের সময়সূচি

আবারাও বলতে লাইব্রেরির ইন্টারপ্রেটেশন এবং সময়সূচি স্থানীয় সময় অঞ্চলে করা হয় যেখানে গো অ্যাপ্লিকেশনটি চলমান। ডেইলাইট-সেভিং সময় পরিবর্তনের সময়ে, নিশ্চিত সময়গুলি অস্তিত্ব না বা পুনরাবৃত্তি হতে পারে।

8. থ্রেড সুরক্ষা এবং সমকালীনতা

cron লাইব্রেরিটি নিষ্ঠুর সেফটি এবং সমকালীন। রেস শর্তাধীনতা এড়ানোর জন্য কলারের জন্য সঠিক অনুরোধ দশাক্রম বজায় রাখা ক্রুশিয়াল। কোন পর্যায়ে সঠিক সমকালীন পদক্ষেপ নিশ্চিত করতে, প্রয়োজনগুলি হইলে উচিত সমকালীনকরণ ব্যবহার করা উচিত।