reusePort
ध्यान दें
यह कार्यक्षम बनाना आवश्यक है कि workerman>= 3.2.1 PHP>=7.0, Windows सिस्टम और Mac OS इस विशेषता का समर्थन नहीं करते हैं।
विवरण:
bool Worker::$reusePort
वर्तमान कार्यकर्ता के लिए यह निर्धारित करता है कि क्या पोर्ट पुन: उपयोग (socket के SO_REUSEPORT विकल्प) को सुनने के लिए सक्षम किया गया है।
पोर्ट पुन: उपयोग को सक्षम करने के बाद कई बिना पारिवारिक संबंधों वाले प्रक्रियाओं को समान पोर्ट सुनने की अनुमति मिलती है, और सिस्टम कर्नेल लोड बैलेंसिंग करता है, यह तय करता है कि किस प्रक्रिया को socket कनेक्शन संसाधित करने के लिए दिया जाए, यह झुंड प्रभाव से बचाता है, और छोटे कनेक्शन वाले मल्टी-प्रोसेस अनुप्रयोगों के प्रदर्शन को बढ़ा सकता है।
ध्यान दें: इस विशेषता के लिए PHP संस्करण >=7.0 की आवश्यकता है।
उदाहरण 1
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('websocket://0.0.0.0:8484');
$worker->count = 4;
$worker->reusePort = true;
$worker->onMessage = function(TcpConnection $connection, $data)
{
$connection->send('ok');
};
// कार्यकर्ता चलाएँ
Worker::runAll();
उदाहरण 2: workerman मल्टी-पोर्ट (मल्टी-प्रोटोकॉल) सुनना
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('text://0.0.0.0:2015');
$worker->count = 4;
// प्रत्येक प्रक्रिया के शुरू होने के बाद वर्तमान प्रक्रिया में एक नया लिसन जोड़ें
$worker->onWorkerStart = function($worker)
{
$inner_worker = new Worker('http://0.0.0.0:2016');
/**
* कई प्रक्रियाएँ एक ही पोर्ट सुन रही हैं (सुनने वाला सोकेट माता-पिता प्रक्रिया से विरासत में नहीं मिला)
* पोर्ट पुन: उपयोग को सक्षम करना आवश्यक है, नहीं तो Address already in use त्रुटि आएगी
*/
$inner_worker->reusePort = true;
$inner_worker->onMessage = 'on_message';
// सुनने को निष्पादित करें
$inner_worker->listen();
};
$worker->onMessage = 'on_message';
function on_message(TcpConnection $connection, $data)
{
$connection->send("hello\n");
}
// कार्यकर्ता चलाएँ
Worker::runAll();