Init Repo

This commit is contained in:
root
2019-09-06 23:53:10 +08:00
commit f0ef89dfbb
7905 changed files with 914138 additions and 0 deletions

View File

@ -0,0 +1,17 @@
<?php
$serv = new swoole_server("127.0.0.1", 9501);
$serv->set(array(
'dispatch_func' => function ($serv, $fd, $type, $data) {
var_dump($fd, $type, $data);
return intval($data[0]);
},
));
$serv->on('receive', function (swoole_server $serv, $fd, $threadId, $data)
{
var_dump($data);
echo "#{$serv->worker_id}>> received length=" . strlen($data) . "\n";
});
$serv->start();

View File

@ -0,0 +1,15 @@
<?php
$serv = new swoole_server("127.0.0.1", 9501);
$serv->set(array(
'dispatch_mode' => 7,
'worker_num' => 2,
));
$serv->on('receive', function (swoole_server $serv, $fd, $threadId, $data)
{
var_dump($data);
echo "#{$serv->worker_id}>> received length=" . strlen($data) . "\n";
});
$serv->start();

25
vendor/swoole/examples/server/echo.php vendored Executable file
View File

@ -0,0 +1,25 @@
<?php
$serv = new swoole_server("0.0.0.0", 9501);
//$serv->on('connect', function ($serv, $fd, $reactor_id){
// echo "[#".posix_getpid()."]\tClient@[$fd:$reactor_id]: Connect.\n";
//});
$serv->set(array(
'worker_num' => 1,
));
$serv->on('receive', function (swoole_server $serv, $fd, $reactor_id, $data) {
echo "[#".$serv->worker_id."]\tClient[$fd] receive data: $data\n";
if ($serv->send($fd, "hello {$data}\n") == false)
{
echo "error\n";
}
});
//$serv->on('close', function ($serv, $fd, $reactor_id) {
// echo "[#".posix_getpid()."]\tClient@[$fd:$reactor_id]: Close.\n";
//});
$serv->start();

141
vendor/swoole/examples/server/exist.php vendored Executable file
View File

@ -0,0 +1,141 @@
<?php
class G
{
static $serv;
private static $buffers = array();
/**
* @param $fd
* @return swoole_buffer
*/
static function getBuffer($fd, $create = true)
{
if (!isset(self::$buffers[$fd]))
{
if (!$create)
{
return false;
}
self::$buffers[$fd] = new swoole_buffer(1024 * 128);
}
return self::$buffers[$fd];
}
}
$config = array(
//'worker_num' => 4,
//'open_eof_check' => true,
//'package_eof' => "\r\n",
// 'task_ipc_mode' => 2,
'task_worker_num' => 2,
'user' => 'www',
'group' => 'www',
'chroot' => '/opt/tmp',
//'task_ipc_mode' => 1,
//'dispatch_mode' => 1,
//'log_file' => '/tmp/swoole.log',
'heartbeat_check_interval' => 300,
'heartbeat_idle_time' => 300,
// open_cpu_affinity => 1,
//'cpu_affinity_ignore' =>array(0,1)//如果你的网卡2个队列或者没有多队列那么默认是cpu0来处理中断,并且绑定了core 0和core 1,那么可以通过这个设置避免swoole的线程或者进程绑定到这2个core防止cpu01被耗光而造成的丢包
);
if (isset($argv[1]) and $argv[1] == 'daemon') {
$config['daemonize'] = true;
} else {
$config['daemonize'] = false;
}
//$mode = SWOOLE_BASE;
$mode = SWOOLE_PROCESS;
$serv = new swoole_server("0.0.0.0", 9501, $mode);
$serv->set($config);
/**
* 使用类的静态属性,可以直接访问
*/
G::$serv = $serv;
function my_onStart(swoole_server $serv)
{
global $argv;
swoole_set_process_name("php {$argv[0]}: master");
echo "MasterPid={$serv->master_pid}|Manager_pid={$serv->manager_pid}\n";
echo "Server: start.Swoole version is [".SWOOLE_VERSION."]\n";
}
function my_log($msg)
{
echo $msg.PHP_EOL;
}
function my_onShutdown($serv)
{
echo "Server: onShutdown\n";
}
function my_onClose($serv, $fd, $from_id)
{
my_log("Worker#{$serv->worker_pid} Client[$fd@$from_id]: fd=$fd is closed");
$buffer = G::getBuffer($fd);
if ($buffer)
{
$buffer->clear();
}
if($serv->exist($fd)) {
echo 'FD[' . $fd . '] exist' . PHP_EOL;
} else {
echo 'FD[' . $fd . '] not exist' . PHP_EOL;
}
}
function my_onConnect(swoole_server $serv, $fd, $from_id)
{
if($serv->exist($fd)) {
echo 'FD[' . $fd . '] exist' . PHP_EOL;
} else {
echo 'FD[' . $fd . '] not exist' . PHP_EOL;
}
}
function my_onReceive(swoole_server $serv, $fd, $from_id, $data)
{
if($serv->exist($fd)) {
echo 'FD[' . $fd . '] exist' . PHP_EOL;
} else {
echo 'FD[' . $fd . '] not exist' . PHP_EOL;
}
$serv->task($data . '-' . $fd);
}
function my_onTask(swoole_server $serv, $task_id, $from_id, $data)
{
list($str, $fd) = explode('-', $data);
if($serv->exist($fd)) {
echo 'FD[' . $fd . '] exist' . PHP_EOL ;
} else {
echo 'FD[' . $fd . '] not exist' . PHP_EOL;
}
echo "Task[PID=".$serv->worker_pid."]: task_id=$task_id.".PHP_EOL;
return $data;
}
function my_onFinish(swoole_server $serv, $task_id, $data)
{
list($str, $fd) = explode('-', $data);
$serv->send($fd, 'Send Data To FD[' . $fd . ']');
echo "Task Finish: result=" . $data . ". PID=" . $serv->worker_pid.PHP_EOL;
}
$serv->on('Start', 'my_onStart');
$serv->on('Connect', 'my_onConnect');
$serv->on('Receive', 'my_onReceive');
$serv->on('Close', 'my_onClose');
$serv->on('Shutdown', 'my_onShutdown');
$serv->on('Task', 'my_onTask');
$serv->on('Finish', 'my_onFinish');
$serv->on('ManagerStart', function($serv) {
global $argv;
swoole_set_process_name("php {$argv[0]}: manager");
});
$serv->start();

View File

@ -0,0 +1,48 @@
<?php
$client = new swoole_client(SWOOLE_SOCK_TCP);
if(!$client->connect('127.0.0.1', 9504))
{
exit("connect failed\n");
}
for ($l=0; $l < 1; $l++)
{
$data = '';
for($i=0; $i< 10; $i++)
{
$len = rand(10000, 20000);
echo "package length=".($len + 4)."\n";
send_test3($client, $len);
}
//echo 'total send size:', strlen($data),"\n";
//$client->send($data);
sleep(1);
}
function send_test3($client, $len)
{
$data = pack('n', $len + 4);
$data .= str_repeat('A', $len).rand(1000, 9999);
$chunks = str_split($data, 4000);
foreach($chunks as $ch)
{
$client->send($ch);
}
echo "package: ".substr($data, -4, 4)."\n";
}
function send_test2($client, $len)
{
$data = pack('n', $len + 4);
$data .= str_repeat('A', $len).rand(1000, 9999);
$client->send($data);
}
function send_test1($client, $len)
{
$client->send(pack('n', $len + 4));
usleep(10);
$client->send(str_repeat('A', $len).rand(1000, 9999));
}

View File

@ -0,0 +1,107 @@
<?php
define('PID_FILE_NAME', '/tmp/swoole_server.pid');
$serv = new FixedHeaderServer();
$serv->run('0.0.0.0', 9504);
class FixedHeaderServer
{
protected $buffer = array();
protected $length = array();
/**
* @var swoole_server
*/
protected $serv;
const MAX_PACKAGE_LEN = 8000000;
function onPackage($fd, $pkg)
{
$this->current_fd = $fd;
var_dump($pkg);
$resp = "hello world";
$this->serv->send($fd, $resp);
$this->current_fd = '';
}
function onReceive($serv, $fd, $from_id, $data)
{
echo "package".substr($data, -4, 4)." length=". (strlen($data) - 2)."\n";
}
function onReceive_unpack_php($serv, $fd, $from_id, $data)
{
if (empty($this->buffer[$fd]))
{
$this->buffer[$fd] = '';
$this->length[$fd] = 0;
}
$this->buffer[$fd] .= $data;
$buffer = &$this->buffer[$fd];
do
{
if ($this->length[$fd] === 0)
{
$n = unpack('Nlen', substr($buffer, 0, 4));
$this->length[$fd] = $n['len'];
if ($n['len'] > self::MAX_PACKAGE_LEN)
{
$this->serv->close($fd);
return;
}
}
if (strlen($buffer) >= $this->length[$fd])
{
$this->onPackage($fd, substr($buffer, 0, $this->length[$fd]));
$buffer = substr($buffer, $this->length[$fd]);
$this->length[$fd] = 0;
}
else
{
break;
}
} while(strlen($buffer) > 0);
}
function onClose($serv, $fd)
{
unset($this->buffer[$fd], $this->length[$fd]);
}
function run($host, $port)
{
register_shutdown_function(array($this, 'errorHandler'));
$this->serv = new swoole_server($host, $port);
file_put_contents(PID_FILE_NAME, posix_getpid());
$this->serv->set(array(
'max_request' => 0,
// 'dispatch_mode' => 3,
'open_length_check' => true,
'package_max_length' => 81920,
'package_length_type' => 'n', //see php pack()
'package_length_offset' => 0,
'package_body_offset' => 2,
'worker_num' => 2,
));
$this->serv->on('receive', array($this, 'onReceive'));
$this->serv->on('close', array($this, 'onClose'));
$this->serv->start();
}
function errorHandler()
{
if(!empty($this->current_fd))
{
$rsp = Proxy::shutdown_handler();
$rsp && $this->serv->send($this->current_fd, $rsp);
}
}
}

View File

@ -0,0 +1,86 @@
<?php
$serv = new SocketServer();
$serv->run('0.0.0.0', 9504);
class SocketServer
{
protected $serv; //swoole server
const MAX_PACKAGE_LEN = 8000000; //max data accept
function run($host, $port)
{
register_shutdown_function(array($this, 'errorHandler'));
$this->serv = new swoole_server($host, $port);
$this->serv->set(array(
//'daemonize' => true,
'max_request' => 2000, //reload worker by run xx times
'dispatch_mode' => 3, //who come first who is
'worker_num' => 5, //how much worker will start
'reactor_num' => 2, // depend cpu how much cpu you have
'backlog' => 128, //accept queue
'open_cpu_affinity' => 1, //get cpu more time
'open_tcp_nodelay' => 1, // for small packet to open
'tcp_defer_accept' => 5, //client will accept when not have data
'max_conn' => 10000,
'task_worker_num' => 10,
'task_ipc_mode' => 2, //use queue with "who come first who is"
'message_queue_key' => 0x72000100,
'open_length_check' => true,
'package_max_length' => 999999999,
'package_length_type' => 'N', //see php pack()
'package_length_offset' => 0,
'package_body_offset' => 4,
));
$this->serv->on('receive', array($this, 'onReceive'));
$this->serv->on('close', array($this, 'onClose'));
$this->serv->on('task', array($this, 'onTask'));
$this->serv->on('finish', array($this, 'onFinish'));
$this->serv->start();
}
function onReceive($serv, $fd, $from_id, $data)
{
$packet = json_decode(substr($data,4), true);
//todo::包可能解析失败
$packet["socketfd"] = $fd;
$task_id = $serv->task(json_encode($packet));
//todo::任务可能下发失败
}
function onTask($serv, $task_id, $from_id, $data)
{
$data = json_decode($data, true);
$fd = $data["socketfd"];
$result = array(
"code" => "0",
"msg" => "ok",
"data" => $data,
);
$serv->send($fd, json_encode($result));
}
function onFinish($serv, $task_id, $data)
{
}
function onClose($serv, $fd)
{
}
function errorHandler()
{
//if (!empty($this->current_fd)) {
// $rsp = Proxy::shutdown_handler();
// $rsp && $this->serv->send($this->current_fd, $rsp);
//}
}
}

View File

@ -0,0 +1,20 @@
<?php
$serv = new swoole_server("0.0.0.0", 9501);
//$serv->on('connect', function ($serv, $fd, $reactor_id){
// echo "[#".posix_getpid()."]\tClient@[$fd:$reactor_id]: Connect.\n";
//});
$serv->set(array(
'worker_num' => 1,
));
$serv->on('receive', function (swoole_server $serv, $fd, $reactor_id, $data) {
usleep(rand(100000, 2000000));
var_dump(round($serv->getReceivedTime(), 10));
});
//$serv->on('close', function ($serv, $fd, $reactor_id) {
// echo "[#".posix_getpid()."]\tClient@[$fd:$reactor_id]: Close.\n";
//});
$serv->start();

52
vendor/swoole/examples/server/ip_dispatch.php vendored Executable file
View File

@ -0,0 +1,52 @@
<?php
$serv = new swoole_server("0.0.0.0", 9501);
$serv->fdlist = [];
$serv->workerid = 0;
$serv->set(array(
//'tcp_defer_accept' => 5,
//'ipc_mode' => 2,
'worker_num' => 4,
//'task_worker_num' => 2,
'dispatch_mode' => 4, //ip dispatch
//'max_request' => 1000,
//'daemonize' => true,
//'log_file' => '/tmp/swoole.log'
));
$serv->on('workerStart', function($serv, $worker_id) {
echo "{$worker_id} start".PHP_EOL;
$serv->workerid = $worker_id;
});
$serv->on('connect', function ($serv, $fd, $from_id){
//echo "[#".posix_getpid()."]\tClient@[$fd:$from_id]: Connect.\n";
echo "{$fd} connect, worker:".$serv->workerid.PHP_EOL;
$conn = print_r($serv->connection_info($fd));
$serv->fdlist[$fd] = 1;
print_r($serv->fdlist);
});
$serv->on('task', function ($serv, $task_id, $from_id, $data){
//var_dump($task_id, $from_id, $data);
$fd = $data;
$serv->send($fd, str_repeat('B', 1024*rand(40, 60)).rand(10000, 99999)."\n");
});
$serv->on('finish', function ($serv, $fd, $from_id){
});
$serv->on('receive', function (swoole_server $serv, $fd, $from_id, $data) {
foreach($serv->fdlist as $_fd=>$val) {
$serv->send($_fd, "{$fd} say:".$data.PHP_EOL);
}
});
$serv->on('close', function ($serv, $fd, $from_id) {
//echo "[#".posix_getpid()."]\tClient@[$fd:$from_id]: Close.\n";
unset($serv->fdlist[$fd]);
});
$serv->start();

View File

@ -0,0 +1,15 @@
<?php
$serv = new swoole_server('127.0.0.1', 9001);
for($port = 9002; $port < 9999; $port++)
{
$serv->listen("127.0.0.1", $port, SWOOLE_SOCK_TCP);
}
$serv->on("receive", function($serv, $fd, $reactor_id, $data) {
$info = $serv->getClientInfo($fd);
var_dump($info);
});
$serv->start();

View File

@ -0,0 +1,35 @@
<?php
$serv = new swoole_server("0.0.0.0", 9502);
$serv->on('workerstart', function($server, $id) {
global $argv;
swoole_set_process_name("php {$argv[0]}: worker");
$local_listener = stream_socket_server("127.0.0.1", 9999);
swoole_event_add($local_listener, function($server){
$local_client = stream_socket_accept($server);
swoole_event_add($local_client, function($client){
echo fread($client, 8192);
fwrite($client, "hello");
});
});
});
$serv->on('connect', function (swoole_server $serv, $fd, $from_id) {
//echo "connect\n";;
});
$serv->on('receive', function (swoole_server $serv, $fd, $from_id, $data) {
$serv->send($fd, "Swoole: ".$data);
//$serv->close($fd);
});
$serv->on('close', function (swoole_server $serv, $fd, $from_id) {
//var_dump($serv->connection_info($fd));
//echo "onClose\n";
});
$serv->start();

View File

@ -0,0 +1,20 @@
<?php
for ($i = 0; $i < 2; $i++)
{
$p = new swoole_process(function () use ($i) {
$port = 9501 + $i;
$http = new swoole_http_server("127.0.0.1", $port);
$http->on("start", function ($server) use ($port) {
echo "Swoole http server is started at http://127.0.0.1:{$port}\n";
});
$http->on("request", function ($request, $response) {
$response->header("Content-Type", "text/plain");
$response->end("Hello World\n");
});
$http->start();
}, false, false);
$p->start();
}

View File

@ -0,0 +1,49 @@
<?php
$serv = new swoole_server("0.0.0.0", 9501, SWOOLE_BASE);
//$serv = new swoole_server("0.0.0.0", 9501);
$serv->set(array(
'worker_num' => 2,
'task_worker_num' => 2,
));
$serv->on('pipeMessage', function($serv, $src_worker_id, $data) {
echo "#{$serv->worker_id} message from #$src_worker_id: $data\n";
});
$serv->on('task', function (swoole_server $serv, $task_id, $from_id, $data){
echo "#{$serv->worker_id} NewTask: $data\n";
$serv->sendMessage($data, 0);
//$serv->send($fd, str_repeat('B', 1024*rand(40, 60)).rand(10000, 99999)."\n");
});
$serv->on('finish', function ($serv, $fd, $from_id){
});
$serv->on('receive', function (swoole_server $serv, $fd, $from_id, $data) {
$cmd = trim($data);
if($cmd == 'totask')
{
$serv->sendMessage("hello task process", 2);
}
elseif($cmd == 'toworker')
{
$worker_id = 1 - $serv->worker_id;
$serv->sendMessage("hello worker", $worker_id);
}
elseif($cmd == 'task2worker')
{
$serv->task('hello worker from task.');
}
else
{
echo "#{$serv->worker_id} Recv: $data\n";
}
});
$serv->on('close', function ($serv, $fd, $from_id) {
//echo "[#".posix_getpid()."]\tClient@[$fd:$from_id]: Close.\n";
});
$serv->start();

View File

@ -0,0 +1,47 @@
<?php
$serv = new swoole_server("0.0.0.0", 9501);
$serv->set([
'worker_num' => 4,
'reload_async' => true,
'max_wait_time' => 5,
'task_worker_num' => 2,
]);
$serv->on('WorkerStart', function ($serv, $wid) {
echo "Worker#$wid is started\n";
if ($serv->taskworker) {
return;
}
swoole_event::add(STDIN, function () use ($wid) {
$data = fread(STDIN, 8192);
if ($data) {
echo "#{$wid}: $data";
}
});
});
$serv->on('receive', function (swoole_server $serv, $fd, $reactor_id, $data) {
echo "[#".$serv->worker_id."]\tClient[$fd]: $data\n";
});
$serv->on('Task', function (swoole_server $serv, $task_id, $from_id, $data) {
//echo "#{$serv->worker_id}\tonTask: [PID={$serv->worker_pid}]: task_id=$task_id, data_len=".strlen($data).".".PHP_EOL;
// $serv->finish($data);
return $data;
});
$serv->on('Finish', function (swoole_server $serv, $task_id, $data) {
echo "Task#$task_id finished, data_len=".strlen($data).PHP_EOL;
});
$serv->on('WorkerStop', function ($serv, $wid) {
//sleep($wid + 1);
});
$serv->on('WorkerExit', function ($serv, $wid) {
echo "WorkerExit, PID=".posix_getpid()."\t$wid\n";
swoole_event::del(STDIN);
});
$serv->start();

9
vendor/swoole/examples/server/single.php vendored Executable file
View File

@ -0,0 +1,9 @@
<?php
//single process single thread
$server = new swoole_server('127.0.0.1', 9501, SWOOLE_BASE);
$server->on('Receive', function($serv, $fd, $reactor_id, $data) {
$serv->send($fd, "Swoole: $data");
});
$server->start();

42
vendor/swoole/examples/server/trace.php vendored Executable file
View File

@ -0,0 +1,42 @@
<?php
function test()
{
test_sleep();
}
function test_sleep()
{
echo "sleep 5\n";
sleep(5);
}
$server = new swoole_server('127.0.0.1', 9501);
$server->set([
'worker_num' => 1,
'task_worker_num' => 1,
'request_slowlog_timeout' => 1,
'request_slowlog_file' => '/tmp/trace.log',
]);
$server->on('Receive', function($serv, $fd, $reactor_id, $data) {
if (trim($data) == 'task') {
echo "task\n";
$serv->task($fd);
return;
}
test();
$serv->send($fd, "Swoole: $data");
});
$server->on('Task', function (swoole_server $serv, $task_id, $from_id, $data) {
echo "#{$serv->worker_id}\tonTask: [PID={$serv->worker_pid}]: task_id=$task_id, data_len=".strlen($data).".".PHP_EOL;
test();
$serv->send($data, "Swoole: task\n");
});
$server->on('Finish', function (swoole_server $serv, $task_id, $data) {
echo "Task#$task_id finished, data_len=".strlen($data).PHP_EOL;
});
$server->start();

View File

@ -0,0 +1,64 @@
<?php
$serv = new swoole_server("0.0.0.0", 9501);
$serv->fdlist = [];
$serv->set(array(
//'tcp_defer_accept' => 5,
//'ipc_mode' => 2,
'worker_num' => 4,
//'task_worker_num' => 2,
'dispatch_mode' => 5, //uid dispatch
//'max_request' => 1000,
//'daemonize' => true,
//'log_file' => '/tmp/swoole.log'
));
$serv->on('timer', function($serv, $interval) {
echo "onTimer: $interval\n";
});
$serv->on('start', function($serv) {
//$serv->addtimer(1000);
});
$serv->on('workerStart', function($serv, $worker_id) {
echo "{$worker_id} start".PHP_EOL;
//if($worker_id == 0) $serv->addtimer(1000);
});
$serv->on('connect', function ($serv, $fd, $from_id){
//echo "[#".posix_getpid()."]\tClient@[$fd:$from_id]: Connect.\n";
echo "{$fd} connect, worker:".$serv->worker_id.PHP_EOL;
});
$serv->on('task', function ($serv, $task_id, $from_id, $data){
});
$serv->on('finish', function ($serv, $fd, $from_id){
});
$serv->on('receive', function (swoole_server $serv, $fd, $from_id, $data) {
$conn = $serv->connection_info($fd);
print_r($conn);
echo "worker_id: " . $serv->worker_id . PHP_EOL;
if (empty($conn['uid'])) {
$uid = $fd + 1;
if ($serv->bind($fd, $uid)) {
$serv->send($fd, "bind {$uid} success");
}
} else {
if (empty($serv->fdlist[$fd])) {
$serv->fdlist[$fd] = $conn['uid'];
}
print_r($serv->fdlist);
foreach ($serv->fdlist as $_fd => $uid) {
$serv->send($_fd, "{$fd} say:" . $data . PHP_EOL);
}
}
});
$serv->on('close', function ($serv, $fd, $from_id) {
//echo "[#".posix_getpid()."]\tClient@[$fd:$from_id]: Close.\n";
unset($serv->fdlist[$fd]);
});
$serv->start();

17
vendor/swoole/examples/server/unix_stream.php vendored Executable file
View File

@ -0,0 +1,17 @@
<?php
$serv = new swoole_server(__DIR__."/svr.sock", 0, SWOOLE_PROCESS, SWOOLE_UNIX_STREAM);
$serv->set(array(
'worker_num' => 1,
));
$serv->on('connect', function ($serv, $fd, $from_id){
echo "[#".posix_getpid()."]\tClient@[$fd:$from_id]: Connect.\n";
});
$serv->on('receive', function (swoole_server $serv, $fd, $from_id, $data) {
echo "[#".posix_getpid()."]\tClient[$fd]: $data\n";
$serv->send($fd, json_encode(array("hello" => '1213', "bat" => "ab")));
//$serv->close($fd);
});
$serv->on('close', function ($serv, $fd, $from_id) {
echo "[#".posix_getpid()."]\tClient@[$fd:$from_id]: Close.\n";
});
$serv->start();

58
vendor/swoole/examples/server/zmq.php vendored Executable file
View File

@ -0,0 +1,58 @@
<?php
$serv = new swoole_server("0.0.0.0", 9501);
$context = new ZMQContext();
$sender = new ZMQSocket($context, ZMQ::SOCKET_PUSH);
$sender->bind("tcp://*:5557");
$receiver = new ZMQSocket($context, ZMQ::SOCKET_PULL);
$receiver->bind("tcp://*:5558");
function onZMQR()
{
global $receiver;
$string = $receiver->recv();
echo $string, PHP_EOL;
}
$serv->set(array(
//'tcp_defer_accept' => 5,
'worker_num' => 1,
'reactor_num' => 1,
//'daemonize' => true,
//'log_file' => '/tmp/swoole.log'
));
$serv->on('workerStart', function($serv, $worker_id) {
global $sender;
global $receiver;
$rfd = $receiver->getsockopt(ZMQ::SOCKOPT_FD);
swoole_event_add($rfd, 'onZMQR', NULL , SWOOLE_EVENT_READ);
echo "worker start\n";
});
$serv->on('connect', function ($serv, $fd, $from_id){
echo "[#".posix_getpid()."]\tClient@[$fd:$from_id]: Connect.\n";
});
$serv->on('receive', function (swoole_server $serv, $fd, $from_id, $data) {
$cmd = trim($data);
echo "[#".posix_getpid()."]\tClient[$fd]: $data\n";
if($cmd == "zmqtest")
{
echo 'aaaaaaaaaaaa'. PHP_EOL;
$sender->send("msg to zmq");
}
$serv->send($fd, 'OK'.PHP_EOL);
//$serv->close($fd);
});
$serv->on('close', function ($serv, $fd, $from_id) {
echo "[#".posix_getpid()."]\tClient@[$fd:$from_id]: Close.\n";
});
//$serv->start();