ফাইল পর্যবেক্ষণ উপাদান

পটভূমি:

Workerman একটি স্থায়ী মেমরিতে চলমান, স্থায়ী মেমরি পুনরায় ডিস্ক পড়া এবং পুনরায় ব্যাখ্যা ও সংকলন করা PHP প্রতিরোধ করে, যাতে সর্বোচ্চ দক্ষতা অর্জন করা যায়। তাই ব্যবসায়িক কোড পরিবর্তন করার পর এটি সক্রিয় করতে ম্যানুয়ালি reload বা restart করতে হয়।

একই সাথে, Workerman একটি ফাইল আপডেট পর্যবেক্ষণের পরিষেবা প্রদান করে, এই পরিষেবাটি একটি ফাইল আপডেট হলে স্বয়ংক্রিয়ভাবে reload চালায়, PHP ফাইলগুলি পুনরায় লোড করে। ডেভেলপাররা এটি তাদের প্রকল্পে অন্তর্ভুক্ত করে প্রকল্প শুরু করার সাথে সংগে চালাতে পারেন।

ফাইল পর্যবেক্ষণ পরিষেবা ডাউনলোড ঠিকানা:

  1. নির্ভরতা মুক্ত সংস্করণ: https://github.com/walkor/workerman-filemonitor

  2. inotify নির্ভর সংস্করণ: https://github.com/walkor/workerman-filemonitor-inotify (এটি inotify এক্সটেনশন ইনস্টল করতে হবে)

দুই সংস্করণের পার্থক্য:

ঠিকানা 1 সংস্করণ প্রত্যেক সেকেন্ডে ফাইল আপডেট সময় পরীক্ষা করার পদ্ধতি ব্যবহার করে ফাইল আপডেট হয়েছে কিনা তা নির্ধারণ করে,

ঠিকানা 2 Linux কোরের inotify পদ্ধতি ব্যবহার করে, ফাইল আপডেট হলে সিস্টেম স্বয়ংক্রিয়ভাবে Workerman-কে জানান দেয়।

সাধারণত প্রথম নির্ভরতা মুক্ত সংস্করণটি ব্যবহার করা যথেষ্ট।

ব্যবহার বিধি

Applications/FileMonitor ডিরেক্টরিটি আপনার প্রকল্পের Applications ডিরেক্টরিতে কপি করুন।

যদি আপনার প্রকল্পে Applications ডিরেক্টরি না থাকে, তাহলে Applications/FileMonitor/start.php ফাইলটি আপনার প্রকল্পের যেকোনো স্থানে কপি করুন এবং শুরু স্ক্রিপ্টে require করুন।

পর্যবেক্ষণ উপাদান ডিফল্টভাবে Applications ডিরেক্টরি পর্যবেক্ষণ করে, যদি এটি পরিবর্তন করতে হয় তবে Applications/FileMonitor/start.php মধ্যে $monitor_dir পরিবর্তন করুন, $monitor_dir এর মান পরামর্শ দেওয়া হয় যে এটি একটি সম্পূর্ণ পথ।

বিঃদ্রঃ:

  • উইন্ডোজ সিস্টেম reload সমর্থন করে না, এবং এই পর্যবেক্ষণ পরিষেবাটি ব্যবহার করা যাবে না।
  • এটি কেবল debug মোডে কার্যকরী, daemon মোডে ফাইল পর্যবেক্ষণ করা হবে না (কেন daemon মোড সমর্থন করে না তা নিচে ব্যাখ্যা করা হয়েছে)।
  • কেবল Worker::runAll চলাকালীন লোড করা ফাইলগুলি গরম আপডেট হতে পারে, অথবা বলতে গেলে কেবল onXXX কলব্যাকের মধ্যে লোড করা ফাইলগুলি গরম আপডেট হতে পারে।

কেন daemon মোড সমর্থন করে না?

daemon মোড সাধারণত লাইভ প্রোডাকশন পরিবেশে চলবে। প্রোডাকশন পরিবেশে প্রকাশনার সময়, সাধারণত একবারে একাধিক ফাইল প্রকাশিত হয়, ফাইলগুলোর মধ্যে কিছু নির্ভরতাও থাকতে পারে। একাধিক ফাইল একসাথে ডিস্কে স্থানান্তরের জন্য কিছু সময় লাগবে, তখন ডিস্কে কিছু সময়ের জন্য অসম্পূর্ণ ফাইল থাকতে পারে, যদি এই সময়ে ফাইল আপডেটটি পর্যবেক্ষণ করা হয় এবং reload কার্যকর করা হয়, তবে গুরুত্বপূর্ণ ত্রুটির আবির্ভাব ঘটে।

অন্যদিকে প্রোডাকশন পরিবেশে মাঝে মাঝে বাস্তবে bug ট্রেস করা হয়, যদি সরাসরি কোড সম্পাদনা করা হয় এবং সংরক্ষণ করা হয়, তাহলে এটি তৎক্ষণাৎ কার্যকর হবে, যা সাধারণত স্বাক্ষরিত ত্রুটি ঘটাতে পারে, ফলে লাইভ সেবা অকার্যকর হতে পারে। সঠিক পদ্ধতি হল কোড সংরক্ষণ করার পর php -l yourfile.php ব্যবহার করে এটি পরীক্ষা করা যে কোনো সিনট্যাক্স ত্রুটি রয়েছে কিনা, তারপর এটি পুনরায় লোড করে গরম আপডেট করা।

যদি ডেভেলপার সত্যিই daemon মোডে ফাইল পর্যবেক্ষণ এবং স্বয়ংক্রিয় আপডেট করার প্রয়োজন অনুভব করেন, তাহলে তারা Applications/FileMonitor/start.php কোডটিতে পরিবর্তন করতে পারেন, Worker::$daemonize অংশের পরীক্ষা মুছে ফেললেই হবে।