id

يتطلب (workerman >= 3.2.1)

说明:

int Worker::$id

معرف العملية الحالية للـworker، يتراوح من 0 إلى $worker->count-1.

هذه الخاصية مفيدة جدًا لتمييز عمليات الـworker، على سبيل المثال إذا كان هناك مثيل worker واحد يحتوي على عدة عمليات، ويريد المطور ضبط مؤقت فقط في إحدى العمليات، يمكنه القيام بذلك من خلال التعرف على رقم العملية id، مثل ضبط المؤقت فقط في العملية ذات الرقم المعرف id لمثيل الـworker ، والذي يكون 0 (انظر المثال).

注意:

قيمة معرف id لا تتغير بعد إعادة تشغيل العملية.

توزيع رقم العملية id يعتمد على كل مثيل worker. يبدأ كل مثيل worker من 0 لتعيين أرقام العمليات الخاصة به، لذا ستتكرر أرقام العمليات بين مثيلات العمال، لكن أرقام العمليات داخل مثيل worker واحد لن تتكرر. على سبيل المثال المثال التالي:

<?php
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';

// يحتوي worker المثيل 1 على 4 عمليات، وستكون أرقام معرف العمليات على التوالي 0، 1، 2، 3
$worker1 = new Worker('tcp://0.0.0.0:8585');
// تعيين لبدء 4 عمليات
$worker1->count = 4;
// بعد بدء كل عملية، طباعة معرف العملية الحالي أي $worker1->id
$worker1->onWorkerStart = function($worker1)
{
    echo "worker1->id={$worker1->id}\n";
};

// يحتوي worker المثيل 2 على عمليتين، وستكون أرقام معرف العمليات على التوالي 0، 1
$worker2 = new Worker('tcp://0.0.0.0:8686');
// تعيين لبدء عمليتين
$worker2->count = 2;
// بعد بدء كل عملية، طباعة معرف العملية الحالي أي $worker2->id
$worker2->onWorkerStart = function($worker2)
{
    echo "worker2->id={$worker2->id}\n";
};

// تشغيل الـworker
Worker::runAll();

سيكون الإخراج شيئًا مثل

worker1->id=0
worker1->id=1
worker1->id=2
worker1->id=3
worker2->id=0
worker2->id=1

注意:نظام ويندوز لا يدعم إعداد عدد العمليات count ، لذا فإن الرقم المعرف هو فقط 0. لا يدعم نظام ويندوز تهيئة اثنين من Workers لنفس الملف للاستماع، لذا فإن هذا المثال لا يمكن تشغيله على نظام ويندوز.

范例

مثيل worker واحد يحتوي على 4 عمليات، ويتم ضبط المؤقت فقط في العملية ذات الرقم المعرف id 0.

use Workerman\Worker;
use Workerman\Timer;
require_once __DIR__ . '/vendor/autoload.php';

$worker = new Worker('tcp://0.0.0.0:8585');
$worker->count = 4;
$worker->onWorkerStart = function($worker)
{
    // يتم ضبط المؤقت فقط في العملية ذات الرقم المعرف id 0، وليس في العمليات 1، 2، 3
    if($worker->id === 0)
    {
        Timer::add(1, function(){
            echo "4 عمليات worker، يتم ضبط المؤقت فقط في العملية 0\n";
        });
    }
};
// تشغيل الـworker
Worker::runAll();