id

आवश्यकता (workerman >= 3.2.1)

विवरण:

int Worker::$id

वर्तमान worker प्रक्रिया की id संख्या, सीमा 0 से $worker->count-1 है।

यह गुण worker प्रक्रियाओं के बीच भेद करने के लिए बहुत उपयोगी है, उदाहरण के लिए, यदि एक worker उदाहरण में कई प्रक्रियाएँ हों, तो डेवलपर चाह सकता है कि केवल एक प्रक्रिया में टाइमर सेट किया जाए, तो वह प्रक्रिया नंबर id की पहचान करके इसे कर सकता है, जैसे कि केवल उस worker उदाहरण id संख्या 0 वाली प्रक्रिया में टाइमर सेट करना (उदाहरण देखें)।

ध्यान दें:

प्रक्रिया रीस्टार्ट करने के बाद id संख्या का मान अपरिवर्तित रहता है।

प्रक्रिया संख्या id का वितरण प्रत्येक worker उदाहरण पर आधारित होता है। प्रत्येक worker उदाहरण अपनी प्रक्रियाओं को 0 से शुरू करके संख्या देता है, इसलिए worker उदाहरणों के बीच प्रक्रिया संख्याएँ दोहराई जा सकती हैं, लेकिन एक worker उदाहरण में प्रक्रिया संख्या दोहराई नहीं जाएगी। उदाहरण के लिए नीचे का उदाहरण:

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

// worker उदाहरण1 में 4 प्रक्रियाएँ हैं, प्रक्रिया id संख्या क्रमशः 0, 1, 2, 3 होगी
$worker1 = new Worker('tcp://0.0.0.0:8585');
// 4 प्रक्रियाओं को शुरू करने के लिए सेट करें
$worker1->count = 4;
// प्रत्येक प्रक्रिया शुरू होने के बाद वर्तमान प्रक्रिया id संख्या प्रिंट करें यानी $worker1->id
$worker1->onWorkerStart = function($worker1)
{
    echo "worker1->id={$worker1->id}\n";
};

// worker उदाहरण2 में दो प्रक्रियाएँ हैं, प्रक्रिया id संख्या क्रमशः 0, 1 होगी
$worker2 = new Worker('tcp://0.0.0.0:8686');
// 2 प्रक्रियाओं को शुरू करने के लिए सेट करें
$worker2->count = 2;
// प्रत्येक प्रक्रिया शुरू होने के बाद वर्तमान प्रक्रिया id संख्या प्रिंट करें यानी $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

ध्यान दें: Windows प्रणाली में प्रक्रिया संख्या count सेट करने का समर्थन नहीं है, केवल id केवल 0 है। Windows प्रणाली में एक ही फ़ाइल में दो Worker को सुनने के लिए शुरू नहीं किया जा सकता, इसलिए Windows प्रणाली में यह उदाहरण नहीं चल सकता।

उदाहरण

एक 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();