विवरण

Workerman ने 4.x संस्करण से HTTP सेवा के समर्थन को मजबूत किया है। इसमें अनुरोध वर्ग, प्रतिक्रिया वर्ग, सत्र वर्ग और SSE को शामिल किया गया है। यदि आप Workerman की HTTP सेवा का उपयोग करना चाहते हैं, तो Workerman 4.x या बाद के उच्च संस्करण का उपयोग करने की दृढ़ता से सिफारिश की जाती है।

नोट: नीचे दी गई सभी बातें Workerman 4.x संस्करण के उपयोग के लिए हैं, Workerman 3.x के लिए असंगत।

अनुरोध वस्तु प्राप्त करना

अनुरोध वस्तु को हमेशा onMessage कॉलबैक फ़ंक्शन में प्राप्त किया जाता है, और ढांचा स्वचालित रूप से Request वस्तु को कॉलबैक फ़ंक्शन के दूसरे पैरामीटर के माध्यम से पारित करता है।

उदाहरण

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 अनुरोध वस्तु है, यहां अनुरोध वस्तु पर कोई कार्य नहीं किया गया है और सीधे ब्राउज़र को hello वापस कर दिया गया है
    $connection->send("hello");
};

// कार्यकर्ता चलाएँ
Worker::runAll();

जब ब्राउज़र http://127.0.0.1:8080 पर पहुँचता है, तो यह hello लौटाएगा।

अनुरोध पैरामीटर प्राप्त करना get

पूरे get सरणी को प्राप्त करना

$get = $request->get();

यदि अनुरोध में कोई get पैरामीटर नहीं है, तो यह एक खाली सरणी लौटाता है।

get सरणी के किसी विशेष मान को प्राप्त करना

$name = $request->get('name');

यदि get सरणी में यह मान नहीं है, तो यह null लौटाता है।

आप get विधि के दूसरे पैरामीटर के रूप में एक डिफ़ॉल्ट मान भी पारित कर सकते हैं, यदि get सरणी में संबंधित मान नहीं मिला तो यह डिफ़ॉल्ट मान लौटाएगा। उदाहरण के लिए:

$name = $request->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)
{
    $connection->send($request->get('name'));
};

// कार्यकर्ता चलाएँ
Worker::runAll();

जब ब्राउज़र http://127.0.0.1:8080?name=jerry&age=12 पर पहुँचता है, तो यह jerry लौटाएगा।

अनुरोध पैरामीटर प्राप्त करना post

पूरे post सरणी को प्राप्त करना

$post = $request->post();

यदि अनुरोध में कोई post पैरामीटर नहीं है, तो यह एक खाली सरणी लौटाता है।

post सरणी के किसी विशेष मान को प्राप्त करना

$name = $request->post('name');

यदि post सरणी में यह मान नहीं है, तो यह null लौटाता है।

get विधि की तरह, आप post विधि के दूसरे पैरामीटर के रूप में एक डिफ़ॉल्ट मान भी पारित कर सकते हैं, यदि post सरणी में संबंधित मान नहीं मिला तो यह डिफ़ॉल्ट मान लौटाएगा। उदाहरण के लिए:

$name = $request->post('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)
{
    $post = $request->post();
    $connection->send(var_export($post, true));
};

// कार्यकर्ता चलाएँ
Worker::runAll();

मूल अनुरोध post पैकेट प्राप्त करना

$post = $request->rawBody();

यह कार्य php-fpm में file_get_contents("php://input"); संचालन के समान है। HTTP मूल अनुरोध पैकेट प्राप्त करने के लिए उपयोगी है। यह application/x-www-form-urlencoded प्रारूप के अलावा पोस्ट अनुरोध डेटा प्राप्त करने के लिए बहुत उपयोगी है।

उदाहरण

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)
{
    $post = json_decode($request->rawBody());
    $connection->send('hello');
};

// कार्यकर्ता चलाएँ
Worker::runAll();

हैडर प्राप्त करना

पूरे हैडर सरणी को प्राप्त करना

$headers = $request->header();

यदि अनुरोध में कोई हैडर पैरामीटर नहीं है, तो यह एक खाली सरणी लौटाता है। ध्यान दें कि सभी कुंजी छोटे अक्षरों में होती हैं।

header सरणी के किसी विशेष मान को प्राप्त करना

$host = $request->header('host');

यदि हैडर सरणी में यह मान नहीं है, तो यह null लौटाता है। ध्यान दें कि सभी कुंजी छोटे अक्षरों में होती हैं।

get विधि की तरह, आप header विधि के दूसरे पैरामीटर के रूप में एक डिफ़ॉल्ट मान भी पारित कर सकते हैं, यदि हैडर सरणी में संबंधित मान नहीं मिला तो यह डिफ़ॉल्ट मान लौटाएगा। उदाहरण के लिए:

$host = $request->header('host', 'localhost');

उदाहरण

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)
{
    if ($request->header('connection') === 'keep-alive') {
        $connection->send('hello');
    } else {
        $connection->close('hello');
    }    
};

// कार्यकर्ता चलाएँ
Worker::runAll();

कुकी प्राप्त करना

पूरे कुकी सरणी को प्राप्त करना

$cookies = $request->cookie();

यदि अनुरोध में कोई कुकी पैरामीटर नहीं है, तो यह एक खाली सरणी लौटाता है।

cookie सरणी के किसी विशेष मान को प्राप्त करना

$name = $request->cookie('name');

यदि कुकी सरणी में यह मान नहीं है, तो यह null लौटाता है।

get विधि की तरह, आप cookie विधि के दूसरे पैरामीटर के रूप में एक डिफ़ॉल्ट मान भी पारित कर सकते हैं, यदि कुकी सरणी में संबंधित मान नहीं मिला तो यह डिफ़ॉल्ट मान लौटाएगा। उदाहरण के लिए:

$name = $request->cookie('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)
{
    $cookie = $request->cookie();
    $connection->send(var_export($cookie, true));
};

// कार्यकर्ता चलाएँ
Worker::runAll();

अपलोड फ़ाइलें प्राप्त करना

पूरे अपलोड फ़ाइल सरणी को प्राप्त करना

$files = $request->file();

वापस की गई फ़ाइल का प्रारूप इस तरह होता है:

array (
    'avatar' => array (
            'name' => '123.jpg',
            'tmp_name' => '/tmp/workerman.upload.9hjR4w',
            'size' => 1196127,
            'error' => 0,
            'type' => 'application/octet-stream',
      ),
     'anotherfile' =>  array (
            'name' => '456.txt',
            'tmp_name' => '/tmp/workerman.upload.9sirSws',
            'size' => 490,
            'error' => 0,
            'type' => 'text/plain',
      )
)

जहाँ:

  • name फ़ाइल का नाम है
  • tmp_name डिस्क पर अस्थायी फ़ाइल स्थिति है
  • size फ़ाइल का आकार है
  • error त्रुटि कोड है
  • type फ़ाइल का मायन प्रकार है।

नोट:

  • अपलोड फ़ाइल का आकार defaultMaxPackageSize द्वारा सीमित है, जो कि डिफ़ॉल्ट 10M है, इसे बदला जा सकता है।

  • अनुरोध समाप्त होने के बाद फ़ाइल को स्वचालित रूप से हटा दिया जाएगा।

  • यदि अनुरोध में कोई अपलोड फ़ाइल नहीं है, तो यह एक खाली सरणी लौटाता है।

विशेष अपलोड फ़ाइल प्राप्त करना

$avatar_file = $request->file('avatar');

वापस का रूप इस तरह होता है:

array (
        'name' => '123.jpg',
        'tmp_name' => '/tmp/workerman.upload.9hjR4w',
        'size' => 1196127,
        'error' => 0,
        'type' => 'application/octet-stream',
  )

यदि अपलोड की गई फ़ाइल नहीं है, तो यह 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)
{
    $file = $request->file('avatar');
    if ($file && $file['error'] === UPLOAD_ERR_OK) {
        rename($file['tmp_name'], '/home/www/web/public/123.jpg');
        $connection->send('ok');
        return;
    }
    $connection->send('upload fail');
};

// कार्यकर्ता चलाएँ
Worker::runAll();

होस्ट प्राप्त करना

अनुरोध के होस्ट जानकारी प्राप्त करना।

$host = $request->host();

यदि अनुरोध का पता मानक 80 या 443 पोर्ट नहीं है, तो होस्ट जानकारी पोर्ट के साथ आ सकती है, जैसे example.com:8080। यदि पोर्ट की आवश्यकता नहीं है तो पहले पैरामीटर में true पारित किया जा सकता है।

$host = $request->host(true);

उदाहरण

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->host());
};

// कार्यकर्ता चलाएँ
Worker::runAll();

जब ब्राउज़र http://127.0.0.1:8080?name=tom पर पहुँचता है, तो यह 127.0.0.1:8080 लौटाएगा।

अनुरोध विधि प्राप्त करना

$method = $request->method();

वापस की जाने वाली मान हो सकती है GETPOSTPUTDELETEOPTIONSHEAD में से एक।

उदाहरण

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->method());
};

// कार्यकर्ता चलाएँ
Worker::runAll();

अनुरोध URI प्राप्त करना

$uri = $request->uri();

यह अनुरोध का URI लौटाता है, जिसमें path और queryString भाग शामिल होते हैं।

उदाहरण

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->uri());
};

// कार्यकर्ता चलाएँ
Worker::runAll();

जब ब्राउज़र http://127.0.0.1:8080/user/get.php?uid=10&type=2 पर पहुँचता है, तो यह /user/get.php?uid=10&type=2 लौटाएगा।

अनुरोध पथ प्राप्त करना

$path = $request->path();

यह अनुरोध के path भाग को लौटाता है।

उदाहरण

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->path());
};

// कार्यकर्ता चलाएँ
Worker::runAll();

जब ब्राउज़र http://127.0.0.1:8080/user/get.php?uid=10&type=2 पर पहुँचता है, तो यह /user/get.php लौटाएगा।

अनुरोध queryString प्राप्त करना

$query_string = $request->queryString();

यह अनुरोध के queryString भाग को लौटाता है।

उदाहरण

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->queryString());
};

// कार्यकर्ता चलाएँ
Worker::runAll();

जब ब्राउज़र http://127.0.0.1:8080/user/get.php?uid=10&type=2 पर पहुँचता है, तो यह uid=10&type=2 लौटाएगा।

अनुरोध HTTP संस्करण प्राप्त करना

$version = $request->protocolVersion();

यह स्ट्रिंग 1.1 या 1.0 लौटाता है।

उदाहरण

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->protocolVersion());
};

// कार्यकर्ता चलाएँ
Worker::runAll();

अनुरोध sessionId प्राप्त करना

$sid = $request->sessionId();

यह स्ट्रिंग लौटाता है, जो अक्षरों और संख्याओं से बना होता है।

उदाहरण

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->sessionId());
};

// कार्यकर्ता चलाएँ
Worker::runAll();