ملاحظات مهمة
ملاحظات حول استخدام المؤقتات
-
يمكن إضافة المؤقتات فقط في رد الاتصالات
onXXXX
. يُفضل إعداد المؤقتات العامة في رد العاملonWorkerStart
, وإعداد المؤقتات المتعلقة باتصال معين فيonConnect
. -
المهام المجدولة التي تمت إضافتها تنفذ في العملية الحالية (لا يتم بدء عملية أو خيط جديد)، إذا كانت المهمة معقدة (خاصة إذا كانت تتضمن IO الشبكة)، فقد يؤدي ذلك إلى تعليق العملية وعدم قدرتها مؤقتًا على معالجة المهام الأخرى. لذا، من الأفضل تشغيل المهام الزمنية الطويلة في عملية منفصلة، على سبيل المثال بإنشاء عمل واحد أو أكثر.
-
عندما تكون العملية مشغولة بمهام أخرى أو عندما لا ينتهي إحدى المهام في الوقت المتوقع، فإنها ستنتظر حتى انتهاء المهمة الحالية قبل تنفيذ المهمة التالية في الفترة المحددة، وهذا قد يؤدي إلى عدم تنفيذ المؤقت وفقًا للفاصل الزمني المتوقع. وبمعنى آخر، تنفذ مهام العملية الحالية تتابعيًا، أما إذا كانت هناك عمليات متعددة فإن تنفيذ مهام العمليات تكون متوازية.
-
يجب مراعاة أن إعداد مهام مؤقتة في عدة عمليات قد يؤدي إلى مشكلات التنافر، على سبيل المثال، الكود التالي يطبع 5 مرات في الثانية:
$worker = new Worker(); // 5 عمليات $worker->count = 5; $worker->onWorkerStart = function (Worker $worker) { // 5 عمليات، لكل عملية مؤقت مثل هذا Timer::add(1, function(){ echo "hi\r\n"; }); }; Worker::runAll();
إذا كنت ترغب في تنفيذ مؤقت في عملية واحدة فقط، يُرجى الرجوع إلى مثال 2 لإضافة المؤقت.
-
قد تكون هناك دقة بنحو مللي ثانية.
-
لا يمكن حذف المؤقت عبر العمليات المختلفة، على سبيل المثال، لا يمكن حذف المؤقت الذي تم إعداده في عملية "أ" مباشرة عبر واجهة المكتبة
Timer::del
في عملية "ب". -
معرفات المؤقتات قد تكرر بين العمليات المختلفة، ولكن لن تكرر في نطاق عملية محددة.
-
يمكن أن يؤدي تغيير وقت النظام إلى تأثير سلوك المؤقتات، لذا يُفضل إعادة التشغيل بعد تغيير وقت النظام.