You've already forked qlg.tsgz.moe
Init Repo
This commit is contained in:
17
vendor/swoole/examples/server/dispatch_func.php
vendored
Executable file
17
vendor/swoole/examples/server/dispatch_func.php
vendored
Executable 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();
|
15
vendor/swoole/examples/server/dispatch_stream.php
vendored
Executable file
15
vendor/swoole/examples/server/dispatch_stream.php
vendored
Executable 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
25
vendor/swoole/examples/server/echo.php
vendored
Executable 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
141
vendor/swoole/examples/server/exist.php
vendored
Executable 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,防止cpu0,1被耗光而造成的丢包
|
||||
);
|
||||
|
||||
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();
|
48
vendor/swoole/examples/server/fixed_header_client.php
vendored
Executable file
48
vendor/swoole/examples/server/fixed_header_client.php
vendored
Executable 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));
|
||||
}
|
107
vendor/swoole/examples/server/fixed_header_server.php
vendored
Executable file
107
vendor/swoole/examples/server/fixed_header_server.php
vendored
Executable 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
86
vendor/swoole/examples/server/fixed_header_server1.7.3.php
vendored
Executable file
86
vendor/swoole/examples/server/fixed_header_server1.7.3.php
vendored
Executable 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);
|
||||
//}
|
||||
}
|
||||
}
|
20
vendor/swoole/examples/server/getReceivedTime.php
vendored
Executable file
20
vendor/swoole/examples/server/getReceivedTime.php
vendored
Executable 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
52
vendor/swoole/examples/server/ip_dispatch.php
vendored
Executable 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();
|
15
vendor/swoole/examples/server/listen_1k_port.php
vendored
Executable file
15
vendor/swoole/examples/server/listen_1k_port.php
vendored
Executable 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();
|
||||
|
35
vendor/swoole/examples/server/local_listener.php
vendored
Executable file
35
vendor/swoole/examples/server/local_listener.php
vendored
Executable 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();
|
20
vendor/swoole/examples/server/multi_instance.php
vendored
Executable file
20
vendor/swoole/examples/server/multi_instance.php
vendored
Executable 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();
|
||||
}
|
49
vendor/swoole/examples/server/pipe_message.php
vendored
Executable file
49
vendor/swoole/examples/server/pipe_message.php
vendored
Executable 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();
|
||||
|
47
vendor/swoole/examples/server/reload_aysnc.php
vendored
Executable file
47
vendor/swoole/examples/server/reload_aysnc.php
vendored
Executable 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
9
vendor/swoole/examples/server/single.php
vendored
Executable 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
42
vendor/swoole/examples/server/trace.php
vendored
Executable 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();
|
64
vendor/swoole/examples/server/uid_dispatch.php
vendored
Executable file
64
vendor/swoole/examples/server/uid_dispatch.php
vendored
Executable 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
17
vendor/swoole/examples/server/unix_stream.php
vendored
Executable 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
58
vendor/swoole/examples/server/zmq.php
vendored
Executable 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();
|
Reference in New Issue
Block a user