forked from openswoole/ext-openswoole
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathproxy_sync.php
62 lines (53 loc) · 1.46 KB
/
proxy_sync.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
55
56
57
58
59
60
61
62
<?php
class ProxyServer
{
protected $clients;
protected $backends;
protected $serv;
function run()
{
$serv = new swoole_server("127.0.0.1", 9509);
$serv->set(array(
'worker_num' => 32, //reactor thread num
'backlog' => 128, //listen backlog
'max_conn' => 10000,
'dispatch_mode' => 2,
//'open_tcp_keepalive' => 1,
//'log_file' => '/tmp/swoole.log', //swoole error log
));
$serv->on('WorkerStart', array($this, 'onStart'));
$serv->on('Connect', array($this, 'onConnect'));
$serv->on('Receive', array($this, 'onReceive'));
$serv->on('Close', array($this, 'onClose'));
$serv->on('WorkerStop', array($this, 'onShutdown'));
$serv->start();
}
function onStart($serv)
{
$this->serv = $serv;
echo "Server: start.Swoole version is [" . SWOOLE_VERSION . "]\n";
}
function onShutdown($serv)
{
echo "Server: onShutdown\n";
}
function onClose($serv, $fd, $reactor_id)
{
}
function onConnect($serv, $fd, $reactor_id)
{
}
function onReceive($serv, $fd, $reactor_id, $data)
{
$socket = new swoole_client(SWOOLE_SOCK_TCP);
if($socket->connect('127.0.0.1', 80, 0.5))
{
$socket->send($data);
$serv->send($fd, $socket->recv(8192, 0));
}
unset($socket);
$serv->close($fd);
}
}
$serv = new ProxyServer();
$serv->run();