विवरण
workerman 4.x संस्करण से HTTP सेवाओं के समर्थन को मजबूत किया गया है। रूपांतरित किए गए अनुरोध वर्ग, प्रतिक्रिया वर्ग, सत्र वर्ग और SSE को पेश किया गया है। यदि आप workerman की HTTP सेवा का उपयोग करना चाहते हैं, तो workerman 4.x या इसके बाद के उच्चतर संस्करण का उपयोग करने की सिफारिश की जाती है।
सत्र ऑब्जेक्ट प्राप्त करें
$session = $request->session();
उदाहरण
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
use Workerman\Protocols\Http\Request;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('http://0.0.0.0:8080');
$worker->onMessage = function(TcpConnection $connection, Request $request)
{
$session = $request->session();
$session->set('name', 'tome');
$connection->send($session->get('name'));
};
// कार्यकर्ता चलाएँ
Worker::runAll();
नोट्स
- सत्र को
$connection->send()कॉल करने से पहले संचालित करना चाहिए। - सत्र वस्तु के नाश होने पर संशोधन स्वचालित रूप से सहेजें जाएंगे, इसलिए
$request->session()द्वारा लौटाई गई वस्तु को वैश्विक सरणी या वर्ग के सदस्यों में सहेजें नहीं जिससे सत्र सहेजा न जा सके। - सत्र डिफ़ॉल्ट रूप से डिस्क फ़ाइलों में संग्रहीत होता है, यदि आप बेहतर प्रदर्शन चाहते हैं तो redis का उपयोग करने की सिफारिश की जाती है।
सभी सत्र डेटा प्राप्त करें
$session = $request->session();
$all = $session->all();
यह एक सरणी लौटाता है। यदि कोई सत्र डेटा नहीं है, तो यह एक खाली सरणी लौटाएगा।
उदाहरण
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
use Workerman\Protocols\Http\Request;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('http://0.0.0.0:8080');
$worker->onMessage = function(TcpConnection $connection, Request $request)
{
$session = $request->session();
$session->set('name', 'tom');
$connection->send(var_export($session->all(), true));
};
// कार्यकर्ता चलाएँ
Worker::runAll();
सत्र में एक मान प्राप्त करना
$session = $request->session();
$name = $session->get('name');
यदि डेटा मौजूद नहीं है, तो null लौटाएगा।
आप get विधि को दूसरे पैरामीटर के रूप में एक डिफ़ॉल्ट मान भी दे सकते हैं, यदि सत्र सरणी में संबंधित मान नहीं पाया जाता है तो डिफ़ॉल्ट मान लौटाना। उदाहरण:
$session = $request->session();
$name = $session->get('name', 'tom');
उदाहरण
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
use Workerman\Protocols\Http\Request;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('http://0.0.0.0:8080');
$worker->onMessage = function(TcpConnection $connection, Request $request)
{
$session = $request->session();
$connection->send($session->get('name', 'tom'));
};
// कार्यकर्ता चलाएँ
Worker::runAll();
सत्र संग्रहीत करना
कोई डेटा संग्रहीत करते समय set विधि का उपयोग करें।
$session = $request->session();
$session->set('name', 'tom');
set का कोई लौटाया गया मान नहीं है, सत्र वस्तु के नाश होने पर सत्र स्वचालित रूप से सहेजा जाएगा।
जब कई मानों को संगृहित किया जा रहा हो, तो put विधि का उपयोग करें।
$session = $request->session();
$session->put(['name' => 'tom', 'age' => 12]);
इसी प्रकार, put का भी कोई लौटाया गया मान नहीं है।
उदाहरण
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
use Workerman\Protocols\Http\Request;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('http://0.0.0.0:8080');
$worker->onMessage = function(TcpConnection $connection, Request $request)
{
$session = $request->session();
$session->set('name', 'tom');
$connection->send($session->get('name'));
};
// कार्यकर्ता चलाएँ
Worker::runAll();
सत्र डेटा हटाना
किसी विशेष अथवा कुछ सत्र डेटा को हटाने के लिए forget विधि का उपयोग करें।
$session = $request->session();
// एक आइटम हटाएँ
$session->forget('name');
// कई आइटम हटाएँ
$session->forget(['name', 'age']);
इसके अलावा, सिस्टम delete विधि प्रदर्शित करता है, और forget विधि के विपरीत, delete केवल एक आइटम को ही हटा सकता है।
$session = $request->session();
// $session->forget('name'); के समान
$session->delete('name');
उदाहरण
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
use Workerman\Protocols\Http\Request;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('http://0.0.0.0:8080');
$worker->onMessage = function(TcpConnection $connection, Request $request)
{
$request->session()->forget('name');
$connection->send('ok');
};
// कार्यकर्ता चलाएँ
Worker::runAll();
सत्र से एक मान प्राप्त करना और हटाना
$session = $request->session();
$name = $session->pull('name');
यह कोड निम्नलिखित कोड के समान प्रभाव डालता है
$session = $request->session();
$value = $session->get($name);
$session->delete($name);
यदि संबंधित सत्र मौजूद नहीं है, तो null लौटाएगा।
उदाहरण
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
use Workerman\Protocols\Http\Request;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('http://0.0.0.0:8080');
$worker->onMessage = function(TcpConnection $connection, Request $request)
{
$connection->send($request->session()->pull('name'));
};
// कार्यकर्ता चलाएँ
Worker::runAll();
सभी सत्र डेटा हटाना
$request->session()->flush();
इसका कोई लौटाया गया मान नहीं है, सत्र वस्तु के नाश होने पर सत्र स्वचालित रूप से भंडारण से हटा दिया जाएगा।
उदाहरण
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
use Workerman\Protocols\Http\Request;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('http://0.0.0.0:8080');
$worker->onMessage = function(TcpConnection $connection, Request $request)
{
$request->session()->flush();
$connection->send('ok');
};
// कार्यकर्ता चलाएँ
Worker::runAll();
संबंधित सत्र डेटा के मौजूद होने की जांच करना
$session = $request->session();
$has = $session->has('name');
उपरोक्त यदि संबंधित सत्र मौजूद नहीं है या संबंधित सत्र मान null है, तो false लौटाएगा, अन्यथा true लौटाएगा।
$session = $request->session();
$has = $session->exists('name');
उपरोक्त कोड भी सत्र डेटा के मौजूद होने की जांच के लिए उपयोग किया जाता है, अंतर यह है कि यदि संबंधित सत्र आइटम मान null है, तो भी true लौटाएगा।
नोट्स
सत्र का उपयोग करते समय कक्षा के उदाहरण ऑब्जेक्ट का सीधे सहेजना अनुशंसित नहीं है, विशेषकर यदि स्रोत अनियंत्रित हो, तो डीसिरियलाइजेशन के दौरान संभावित जोखिम हो सकता है।