মনোযোগের বিষয়সমূহ
টাইমারের ব্যবহার সংক্রান্ত মনোযোগের বিষয়সমূহ
-
টাইমার শুধু
onXXXXকলব্যাকের মধ্যে যোগ করা যেতে পারে। গ্লোবাল টাইমার সেরা হচ্ছেonWorkerStartকলব্যাকের মধ্যে সেট করা, বিশেষ একটি সংযোগের জন্য টাইমারটাonConnectএর মধ্যে সেট করা উচিত। -
যোগ করা টাইমারগুলি বর্তমান প্রক্রিয়ার মধ্যে কার্যকর হয় (নতুন প্রক্রিয়া বা থ্রেড শুরু হয় না), ভারী কাজ অন্য কাজগুলির কার্যকারিতাকে প্রভাবিত করতে পারে, তাই সময়সাপেক্ষ কাজগুলি পৃথক প্রক্রিয়ায় চালানো উচিত, যেমন একটি/একাধিক Worker প্রক্রিয়া তৈরি করা।
-
যদি বর্তমান প্রক্রিয়াতে swoole/swow করৌটিন চালু না করা থাকে, তবে অন্যান্য ব্যবসায়িক কার্যকলাপের জন্য ব্যস্ত থাকলে বা যখন একটি কাজ প্রত্যাশিত সময়ে শেষ না হয়, তখন পরবর্তী নির্বাহের সময় আসলে, বর্তমান কাজটি শেষ হওয়ার জন্য অপেক্ষা করা উচিত, যা টাইমারকে প্রত্যাশিত সময়ের মধ্যে কার্যকর হতে বাধা দিতে পারে। অর্থাৎ, বর্তমান প্রক্রিয়ার ব্যবসা শৃঙ্খলাবদ্ধভাবে সম্পাদিত হয়, যদি এটি বহু-প্রক্রিয়ার হয় তবে প্রক্রিয়া মধ্যে কাজ চালানো সমান্তরাল।
-
বহু-প্রক্রিয়া টাইমার সেট করলে প্রতিযোগিতার সমস্যা ঘটতে পারে, যেমন নিচের কোড প্রতি সেকেন্ডে ৫ বার মুদ্রণ করবে।
$worker = new Worker(); // ৫টি প্রক্রিয়া $worker->count = 5; $worker->onWorkerStart = function(Worker $worker) { // ৫টি প্রক্রিয়া, প্রতিটি প্রক্রিয়াতে একটি করে টাইমার আছে Timer::add(1, function(){ echo "hi\r\n"; }); }; Worker::runAll();যদি শুধুমাত্র একটি প্রক্রিয়া টাইমার চালাতে চান, তবে Timer::add উদাহরণ 2 দেখুন।
-
১ মিলে সেকেন্ডের মতো কিছু বিভ্রান্তি থাকতে পারে।
-
টাইমারকে প্রক্রিয়ার মধ্যে মুছতে পারবেন না, যেমন a প্রক্রিয়া দ্বারা সেট করা টাইমার b প্রক্রিয়াতে সরাসরি Timer::del ইন্টারফেস ব্যবহার করে মুছে ফেলা যাবে না।
-
বিভিন্ন প্রক্রিয়ার মধ্যে টাইমার আইডি পুনরাবৃত্তি হতে পারে, তবে একই প্রক্রিয়ার মধ্যে উৎপন্ন টাইমার আইডি পুনরাবৃত্তি হবে না।
-
সিস্টেমের সময় পরিবর্তন করলে টাইমারের কার্যকারিতাকে প্রভাবিত করে, তাই সিস্টেমের সময় পরিবর্তন করার পর restart মনোযোগ দিতে হবে।