Context सहकारी संदर्भ

Context का उपयोग सहकारियों में संदर्भ जानकारी को संग्रहीत और प्रसारित करने के लिए किया जाता है, जैसे डेटाबेस कनेक्शन, उपयोगकर्ता जानकारी आदि। प्रत्येक सहकारी का अपना संदर्भ होता है, और विभिन्न सहकारियों के बीच संदर्भ अलग होते हैं।

注意
निचले स्तर पर स्वचालित रूप से ड्राइविंग प्रकार की पहचान की जाती है, केवल Swoole/Swow/Fiber ड्राइव का समर्थन करता है

提示
इस विशेषता के लिए workerman>=5.1.0 की आवश्यकता है

<?php

use Workerman\Connection\TcpConnection;
use Workerman\Coroutine;
use Workerman\Coroutine\Context;
use Workerman\Events\Swoole;
use Workerman\Protocols\Http\Request;
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';

$worker = new Worker('http://0.0.0.0:8001');

$worker->eventLoop = Swoole::class; // या Swow::class या Fiber::class

$worker->onMessage = function (TcpConnection $connection, Request $request) {
    // वर्तमान सहकारी में context डेटा सेट करें
    Context::set('user_info', ['id' => 1, 'name' => 'name']);
    // एक नया सहकारी बनाएं
    Coroutine::create(function () use ($connection) {
        // सहकारियों के बीच context डेटा अलग होता है, इसलिए नए सहकारी में जो प्राप्त होता है वह null है
        $userInfo = Context::get('user_info');
        var_dump($userInfo); // आउटपुट null
    });
    // वर्तमान सहकारी के context डेटा को प्राप्त करें
    $userInfo = Context::get('user_info'); // प्राप्त होता है ['id' => 1, 'name' => 'name']
    $connection->send(json_encode($userInfo));
};

Worker::runAll();

इंटरफ़ेस विवरण

interface ContextInterface
{
    /**
     * संदर्भ में मान प्राप्त करें
     */
    public static function get(string $name, mixed $default = null): mixed;

    /**
     * संदर्भ में मान सेट करें
     */
    public static function set(string $name, mixed $value): void;

    /**
     * जांचें कि संदर्भ में निर्दिष्ट नाम का मान मौजूद है या नहीं
     */
    public static function has(string $name): bool;

    /**
     * वर्तमान सहकारी संदर्भ को रीसेट करें
     */
    public static function reset(?ArrayObject $data = null): void;

    /**
     * संदर्भ को नष्ट करें
     */
    public static function destroy(): void;

}