Skip to content

Commit 89cf5b2

Browse files
committed
add swoole session handle
1 parent e365c1f commit 89cf5b2

File tree

5 files changed

+1122
-70
lines changed

5 files changed

+1122
-70
lines changed

src/console/SwooleController.php

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -178,21 +178,27 @@ public function actionStart()
178178
];
179179
$config['aliases'] = isset($config['aliases']) ? array_merge($aliases, $config['aliases']) : $aliases;
180180

181-
$config['components']['request'] = [
181+
$requestComponent = [
182182
'class' => \feehi\web\Request::className(),
183183
'swooleRequest' => $request,
184-
'cookieValidationKey' => 'KaNMPF6oZegCr0bhED4JHYnhOse7UhrS',
185-
'enableCsrfValidation' => true,
186184
];
187-
$config['components']['response'] = [
185+
$config['components']['request'] = isset($config['components']['request']) ? array_merge($config['components']['request'], $requestComponent) : $requestComponent;
186+
187+
$responseComponent = [
188188
'class' => \feehi\web\Response::className(),
189189
'swooleResponse' => $response,
190190
];
191+
$config['components']['response'] = isset($config['components']['response']) ? array_merge($config['components']['response'], $responseComponent) : $responseComponent;
191192

192-
$config['components']['assetManager'] = [
193+
$authManagerComponent = [
193194
'class' => yii\web\AssetManager::className(),
194195
'baseUrl' => '/assets'
195196
];
197+
$config['components']['assetManager'] = isset( $config['components']['assetManager'] ) ? array_merge($authManagerComponent, $config['components']['assetManager']) : $authManagerComponent;
198+
199+
$config['components']['session'] = [
200+
"class" => \feehi\web\Session::className()
201+
];
196202

197203
try {
198204
$application = new \yii\web\Application($config);
@@ -204,8 +210,8 @@ public function actionStart()
204210
}
205211
};
206212

207-
$server->run();
208213
$this->stdout("server is running, listening {$this->host}:{$this->port}" . PHP_EOL);
214+
$server->run();
209215
}
210216

211217
public function actionStop()

src/swoole/SwooleServer.php

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
namespace feehi\swoole;
1010

11+
use feehi\web\Session;
1112

1213
class SwooleServer extends \yii\base\Object
1314
{
@@ -23,6 +24,7 @@ public function __construct($host, $port, $swooleConfig=[])
2324
self::$swooleConfig = $swooleConfig;
2425
$this->swoole->set($swooleConfig);
2526
$this->swoole->on('request', [$this, 'onRequest']);
27+
$this->swoole->on('WorkerStart', [$this, 'onWorkerStart']);
2628
parent::__construct();
2729
}
2830

@@ -44,12 +46,19 @@ public function onRequest($request, $response)
4446
//$this->staticRequest($request, $response);
4547

4648
//转换$_FILE超全局变量
47-
$this->mountGlobalFilesVar($request, $response);
48-
49+
$this->mountGlobalFilesVar($request);
4950

5051
call_user_func_array($this->runApp, [$request, $response]);
5152
}
5253

54+
public function onWorkerStart( $serv , $worker_id) {
55+
if( $worker_id == 0 ) {
56+
\swoole_timer_tick(60000, function(){//一分钟清理一次session
57+
(new Session())->gcSession();
58+
});
59+
}
60+
}
61+
5362
/**
5463
* @param \swoole_http_request $request
5564
* @param \swoole_http_response $response
@@ -116,6 +125,20 @@ private function mountGlobalFilesVar($request)
116125
}
117126
}
118127
}
128+
$_GET = isset($request->get) ? $request->get : [];
129+
$_POST = isset($request->post) ? $request->post : [];
130+
$_COOKIE = isset($request->cookie) ? $request->cookie : [];
131+
132+
$server = isset($request->server) ? $request->server : [];
133+
$header = isset($request->header) ? $request->header : [];
134+
foreach ($server as $key => $value) {
135+
$_SERVER[strtoupper($key)] = $value;
136+
unset($server[$key]);
137+
}
138+
foreach ($header as $key => $value) {
139+
$_SERVER['HTTP_'.strtoupper($key)] = $value;
140+
}
141+
$_SERVER['SERVER_SOFTWARE'] = "swoole/" . SWOOLE_VERSION;
119142
}
120143

121144
}

0 commit comments

Comments
 (0)