国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

說明

workerman從4.x版本開始加強(qiáng)了HTTP服務(wù)的支持。引入了請求類、響應(yīng)類、session類以及SSE。如果你想使用workerman的HTTP服務(wù),強(qiáng)烈推薦使用workerman4.x或者以后的更高版本。

注意以下都是workerman4.x版本的用法,不兼容workerman3.x。

獲取session對象

$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'));
};

// 運(yùn)行worker
Worker::runAll();

注意事項(xiàng)

  • session必須在$connection->send()調(diào)用之前操作。
  • session在對象銷毀時(shí)會(huì)自動(dòng)保存修改,所以不要把$request->session()返回的對象保存在全局?jǐn)?shù)組或者類成員中導(dǎo)致session無法保存。
  • session默認(rèn)存儲(chǔ)在磁盤文件中,如果想要更好的性能建議使用redis。

獲取所有session數(shù)據(jù)

$session = $request->session();
$all = $session->all();

返回的是一個(gè)數(shù)組。如果沒有任何session數(shù)據(jù),則返回一個(gè)空數(shù)組。

例子

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

// 運(yùn)行worker
Worker::runAll();

獲取session中某個(gè)值

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

如果數(shù)據(jù)不存在則返回null。

你也可以給get方法第二個(gè)參數(shù)傳遞一個(gè)默認(rèn)值,如果session數(shù)組中沒找到對應(yīng)值則返回默認(rèn)值。例如:

$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'));
};

// 運(yùn)行worker
Worker::runAll();

存儲(chǔ)session

存儲(chǔ)某一項(xiàng)數(shù)據(jù)時(shí)用set方法。

$session = $request->session();
$session->set('name', 'tom');

set沒有返回值,session對象銷毀時(shí)session會(huì)自動(dòng)保存。

當(dāng)存儲(chǔ)多個(gè)值時(shí)使用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'));
};

// 運(yùn)行worker
Worker::runAll();

刪除session數(shù)據(jù)

刪除某個(gè)或者某些session數(shù)據(jù)時(shí)用forget方法。

$session = $request->session();
// 刪除一項(xiàng)
$session->forget('name');
// 刪除多項(xiàng)
$session->forget(['name', 'age']);

另外系統(tǒng)提供了delete方法,與forget方法區(qū)別是,delete只能刪除一項(xiàng)。

$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');
};

// 運(yùn)行worker
Worker::runAll();

獲取并刪除session某個(gè)值

$session = $request->session();
$name = $session->pull('name');

效果與如下代碼相同

$session = $request->session();
$value = $session->get($name);
$session->delete($name);

如果對應(yīng)session不存在,則返回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'));
};

// 運(yùn)行worker
Worker::runAll();

刪除所有session數(shù)據(jù)

$request->session()->flush();

沒有返回值,session對象銷毀時(shí)session會(huì)自動(dòng)從存儲(chǔ)中刪除。

例子

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');
};

// 運(yùn)行worker
Worker::runAll();

判斷對應(yīng)session數(shù)據(jù)是否存在

$session = $request->session();
$has = $session->has('name');

以上當(dāng)對應(yīng)的session不存在或者對應(yīng)的session值為null時(shí)返回false,否則返回true。

$session = $request->session();
$has = $session->exists('name');

以上代碼也是用來判斷session數(shù)據(jù)是否存在,區(qū)別時(shí)當(dāng)對應(yīng)的session項(xiàng)值為null時(shí),也返回true。

編輯于2024-03-13 17:37:18 完善本頁 +發(fā)起討論
贊助商