-
Notifications
You must be signed in to change notification settings - Fork 35
/
redis-http-server.php
54 lines (50 loc) · 1.55 KB
/
redis-http-server.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
class HttpRedisServer
{
static $frontendCloseCount = 0;
static $backends = array();
static $serv;
}
$serv = new swoole_http_server('127.0.0.1', 9511, SWOOLE_BASE);
//$serv = new swoole_http_server('127.0.0.1', 9510, SWOOLE_PROCESS);
//$serv->set(array('worker_num' => 8));
$serv->on('Close', function ($serv, $fd, $reactorId)
{
HttpRedisServer::$frontendCloseCount++;
echo HttpRedisServer::$frontendCloseCount . "\tfrontend[{$fd}] close\n";
//清理掉后端连接
if (isset(HttpRedisServer::$backends[$fd]))
{
$redis = HttpRedisServer::$backends[$fd];
$redis->close();
}
});
$serv->on('Request', function (swoole_http_request $req, swoole_http_response $resp)
{
$fd = $req->fd;
if (!isset(HttpRedisServer::$backends[$fd]))
{
$redis = new swoole_redis;
HttpRedisServer::$backends[$req->fd] = $redis;
$redis->on('close', function ($cli) use ($fd)
{
unset(HttpRedisServer::$backends[$fd]);
echo "redis-client#{$fd}] is closed\n";
});
$redis->connect('127.0.0.1', 6379, function ($redis, $result) use ($resp)
{
$redis->get("key", function($redis, $res) use ($resp){
$resp->end("<h1>redis_result=".$res."</h1>");
});
});
}
else
{
$redis = HttpRedisServer::$backends[$req->fd];
$redis->get("key", function($redis, $res) use ($resp){
$resp->end("<h1>redis_result=".$res."</h1>");
});
}
});
HttpRedisServer::$serv = $serv;
$serv->start();