ملاحظات

ملاحظات حول استخدام مؤقتات

  1. يمكن إضافة المؤقتات فقط في ردود الفعل onXXXX. يوصى بتعيين المؤقتات العالمية في ردود الفعل onWorkerStart، بينما يوصى بتعيين المؤقتات المحددة على اتصال معين في onConnect.

  2. يتم تنفيذ المهام الموقوتة المضافة في العملية الحالية (لن يتم بدء عملية أو خيط جديد)، قد تؤثر المهام الثقيلة على تنفيذ المهام الأخرى في العملية الحالية، لذا من الأفضل تشغيل المهام المستهلكة للوقت في عملية منفصلة، مثل إنشاء عملية / عمليات Worker تعمل.

  3. إذا لم تكن العملية الحالية قد بدأت تعاونيات swoole/swow، عندما تكون العملية مشغولة بأعمال أخرى أو عندما لا تكتمل مهمة ما في الوقت المتوقع، وعندما يأتي دور فترة التشغيل التالية، ستنتظر العملية الحالية حتى تكتمل المهمة الحالية قبل أن تعمل، مما قد يؤدي إلى عدم تشغيل المؤقتات وفق الفترات الزمنية المتوقعة. بمعنى آخر، جميع الأعمال في العملية الحالية تُنفذ بشكل تسلسلي، أما في حالة العمليات المتعددة، فإن تنفيذ المهام بين العمليات يحدث بشكل متوازٍ.

  4. يجب الانتباه إلى أن إعداد مهام مؤقتة في العمليات المتعددة قد يسبب مشكلات متزامنة، على سبيل المثال، الكود أدناه سيطبع 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::add

  5. قد تكون هناك انحرافات تصل إلى حوالي 1 مللي ثانية.

  6. لا يمكن حذف المؤقتات عبر العمليات، على سبيل المثال، لا يمكن حذف المؤقت الذي تم تعيينه في العملية a مباشرة عبر واجهة Timer::del في العملية b.

  7. قد تتكرر معرفات المؤقتات بين العمليات المختلفة، لكن معرفات المؤقتات التي تم إنشاؤها ضمن نفس العملية لن تتكرر.

  8. سيؤثر تغيير وقت النظام على سلوك المؤقتات، لذا يوصى بإعادة تشغيل النظام بعد تغيير الوقت.