Context কCoroutine কন্টেক্সট
Context ক coroutine এর মধ্যে কন্টেক্সট তথ্য যেমন ডাটাবেস সংযোগ, ব্যবহারকারীর তথ্য ইত্যাদি সংরক্ষণ এবং প্রেরণের জন্য ব্যবহৃত হয়। প্রতিটি coroutine এর নিজস্ব কন্টেক্সট থাকে, বিভিন্ন coroutine এর মধ্যে কন্টেক্সট আলাদা থাকে।
মনে রাখবেন
বেস স্তরের স্বয়ংক্রিয়ভাবে ড্রাইভার টাইপ সনাক্ত করে, কেবল 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) {
// বর্তমান coroutine এ context ডেটা সেট করুন
Context::set('user_info', ['id' => 1, 'name' => 'name']);
// নতুন coroutine তৈরি করুন
Coroutine::create(function () use ($connection) {
// coroutine এর মধ্যে context ডেটা আলাদা, তাই নতুন coroutine এ প্রাপ্ত হবে null
$userInfo = Context::get('user_info');
var_dump($userInfo); // আউটপুট null
});
// বর্তমান coroutine এর 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;
/**
* বর্তমান coroutine কন্টেক্সট পুনরায় সেট করুন
*/
public static function reset(?ArrayObject $data = null): void;
/**
* কন্টেক্সট ধ্বংস করুন
*/
public static function destroy(): void;
}