function errorHandler() { if (!empty($this->current_fd)) { $rsp = Proxy::shutdown_handler(); $rsp && $this->serv->send($this->current_fd, $rsp); } }
function my_onReceive(swoole_server $serv, $fd, $from_id, $data) { //var_dump($serv->connection_info($fd, $from_id)); //echo "worker_pid=".posix_getpid().PHP_EOL; //var_dump($fd, $from_id); $serv->send($fd, 'Swoole: ' . $data, $from_id); }
public function onReceive(swoole_server $serv, $fd, $from_id, $data) { echo "Get Message From Client {$fd}:{$data}\n"; $this->test = new Test(); var_dump($this->test); $serv->task(serialize($this->test)); }
function my_onTask(swoole_server $serv, $task_id, $from_id, $data) { static $datas = array(); if (isset($data['cmd'])) { switch ($data['cmd']) { case 'get': $key = $data['key']; $val = isset($datas[$key]) ? $datas[$key] : ""; $serv->finish(array('key' => $key, 'val' => $val)); break; case "set": $key = $data['key']; $val = $data['val'] . "_" . $from_id; $datas[$key] = $val; return; break; case "del": $key = $data['key']; if (isset($datas[$key])) { unset($datas[$key]); } break; case "task": $key = $data['key']; echo "Do task " . $key . PHP_EOL; break; } } echo "AsyncTask[PID=" . posix_getpid() . "]: task_id={$task_id}." . PHP_EOL; // $serv->finish("OK"); }
public function onReceive(swoole_server $serv, $fd, $from_id, $data) { echo "Get Message from client {$fd}:{$data}:{$from_id}\n"; $params = array('fd' => $fd, 'file' => $data); $id = $serv->task(json_encode($params)); echo "Continue Handle Worker {$id}\n"; }
public function onReceive(swoole_server $serv, $fd, $from_id, $data) { echo "Get Message From Client {$fd}:{$data}\n"; $param = array('fd' => $fd, 'msg' => $data); $str = json_encode($param); $serv->after(1000, array($this, 'onAfter'), $str); }
function my_onReceive(swoole_server $serv, $fd, $from_id, $data) { $cmd = trim($data); if ($cmd == "reload") { $serv->reload($serv); } elseif ($cmd == "task") { $task_id = $serv->task("hello world", 0); echo "Dispath AsyncTask: id={$task_id}\n"; } elseif ($cmd == "info") { $info = $serv->connection_info($fd); $serv->send($fd, 'Info: ' . var_export($info, true) . PHP_EOL); } elseif ($cmd == "broadcast") { $start_fd = 0; while (true) { $conn_list = $serv->connection_list($start_fd, 10); if ($conn_list === false) { break; } $start_fd = end($conn_list); foreach ($conn_list as $conn) { if ($conn === $fd) { continue; } $serv->send($conn, "hello from {$fd}\n"); } } } elseif ($cmd == "error") { hello_no_exists(); } elseif ($cmd == "shutdown") { $serv->shutdown(); } else { $serv->send($fd, 'Server Receive: ' . $data . PHP_EOL, $from_id); $data = json_decode($data, true); if (isset($data['cmd'])) { switch ($data['cmd']) { case 'get': $key = $data['key']; $result = $serv->taskwait(json_encode($data), 0.5, 0); $serv->send($fd, "get {$key}:" . $result . PHP_EOL); break; case "set": $serv->task(json_encode($data), 0); $serv->send($fd, "ok" . PHP_EOL); break; case "del": $serv->task(json_encode($data), 0); break; case "reload": break; default: echo "server:" . $data . PHP_EOL; } } //$serv->close($fd); } //echo "Client:Data. fd=$fd|from_id=$from_id|data=$data"; //$serv->deltimer(800); //swoole_server_send($serv, $other_fd, "Server: $data", $other_from_id); }
public function process(swoole_server $serv, $taskId, $fromId, $data) { // model load $this->defaultModel->sayHello(); // library load $this->mcurl->isEnable(); $serv->finish('sync ok!'); }
public function onReceive(swoole_server $serv, $fd, $from_id, $data) { echo "Get Message From Client {$fd}:{$data}\n"; // send a task to task worker. $param = array('fd' => $fd, 'source' => $data); $serv->task(json_encode($param)); echo "Continue Handle Worker\n"; }
function serve() { $serv = new \swoole_server(SERVERHOST, SERVERPORT); $serv->on('workerStart', [$this, 'onStart']); $serv->on('receive', [$this, 'onReceive']); $serv->set(array('worker_num' => 1, 'dispatch_mode' => 1, 'open_length_check' => true, 'package_max_length' => 8192000, 'package_length_type' => 'N', 'package_length_offset' => 0, 'package_body_offset' => 4)); $serv->start(); }
public function __construct($host, $ip, $config, $bufferDriverClass) { $server = new \swoole_server($host, $ip, SWOOLE_PROCESS, SWOOLE_SOCK_TCP); $server->set($config); $server->on('receive', array($this, 'onReceive')); $server->on('close', array($this, 'onClose')); $this->server =& $server; $this->bufferDriverClass = $bufferDriverClass; }
public function onReceive(swoole_server $serv, $fd, $from_id, $data) { $info = $serv->connection_info($fd, $from_id); if ($info['server_port'] == 9502) { $serv->send($fd, "welcom Admin \n"); } else { $serv->send($fd, 'Swoole:' . $data); } }
public function onReceive(swoole_server $serv, $fd, $from_id, $data) { echo "Get Message From Client {$fd}:{$data}\n"; foreach ($serv->connections as $client) { if ($fd != $client) { $serv->send($client, $data); } } }
public function onConnect(swoole_server $serv, $fd, $from_id) { //获取连接的客户端信息 $fdInfo = $serv->connection_info($fd); echo '<pre>'; print_r($fdInfo); echo '</pre>'; $serv->send($fd, "Welcome {$fd} Connect Server"); }
function run() { $serv = new swoole_server("127.0.0.1", 8002); $serv->set(array('timeout' => 1, 'poll_thread_num' => 1, 'worker_num' => 1, 'backlog' => 128, 'max_conn' => 10000, 'dispatch_mode' => 2)); $serv->on('Receive', array($this, 'onReceive')); $serv->on('Close', array($this, 'onClose')); //swoole_server_addtimer($serv, 2); #swoole_server_addtimer($serv, 10); $serv->start(); }
function onReceive(swoole_server $serv, $fd, $from_id, $data) { $this->count[$fd]++; echo "Client#{$fd} recv: {$data}\n"; if ($this->count[$fd] > 10) { $serv->close($fd); } else { $serv->send($fd, "hello client"); } }
public function onReceive(swoole_server $server, $fd, $from_id, $data) { if (empty($data)) { // 发送数据给客户端,请求包错误 $data = array('code' => 500, 'msg' => '非法请求', 'data' => null); $server->send($fd, json_encode($data)); } //局域网管理 $udpClient = $server->connection_info($fd, $from_id); if ($udpClient['server_port'] == '9502') { $data = str_replace("\r\n\r\n", "", $data); switch ($data) { case 'stop': echo '服务器关闭: ' . date('Y-m-d H:i:s') . PHP_EOL; $server->shutdown(); $server->send($fd, '服务器关闭成功'); break; case 'reload': echo 'Worker进程重启: ' . date('Y-m-d H:i:s') . PHP_EOL; $server->reload(); $server->send($fd, '服务器Worker重启成功'); break; default: $server->send($fd, '非法请求'); break; } } else { $data = json_decode($data, true); echo $data['name'] . " say hello " . Test::WORD . "\n"; $server->send($fd, $data['name'] . " say hello " . Test::WORD); } }
function run($_setting = array()) { $default_setting = array('dispatch_mode' => 3, 'max_request' => 0, 'open_eof_split' => true, 'package_eof' => self::EOF); define('SWOOLE_SERVER', true); $setting = array_merge($default_setting, $_setting); $serv = new \swoole_server('0.0.0.0', self::PORT, SWOOLE_PROCESS); $serv->set($setting); $serv->on('receive', array($this, 'onReceive')); $this->serv = $serv; $this->serv->start(); }
public function onReceive(swoole_server $serv, $fd, $from_id, $data) { $request = unpack("N", $data); print_r($request); $length = $request[1]; $cmd = $request[2]; $filename = substr($data, -$length); echo "length = {$length}\n"; echo "{$filename}\n"; $serv->sendfile($fd, __DIR__ . "/" . $filename); }
public function __construct() { //初始化应用 $this->initializationOfApp(); // 创建swoole_http_server对象 $server = new swoole_server("0.0.0.0", 9500); $server->on('connect', array($this, 'onConnect')); $server->on('receive', array($this, 'onReceive')); $server->on('close', array($this, 'onClose')); $server->start(); }
function run($_setting = array()) { $default_setting = array('worker_num' => 4, 'open_eof_check' => true, 'open_eof_split' => true, 'package_eof' => self::EOF); $this->pid_file = $_setting['pid_file']; $setting = array_merge($default_setting, $_setting); $serv = new \swoole_server('0.0.0.0', self::SVR_PORT_AOP, SWOOLE_PROCESS, SWOOLE_TCP); $serv->set($setting); $serv->on('receive', array($this, 'onReceive')); $this->serv = $serv; $this->serv->start(); }
public function start() { $this->setTitle('proxy'); $type = $this->option['type'] == 'UDP' ? SWOOLE_SOCK_UDP : SWOOLE_SOCK_TCP; $server = new \swoole_server($this->option['host'], $this->option['port'], SWOOLE_PROCESS, $type); $server->set($this->option['setting']); $event = ['Start', 'Receive', 'Close', 'Shutdown', 'Timer', 'WorkerStart', 'WorkerStop', 'Task', 'Finish', 'WorkerError', 'MasterConnect', 'MasterClose', 'Connect']; foreach ($event as $event) { $server->on($event, [$this, sprintf('on%s', $event)]); } $this->server = $server; $this->server->start(); }
protected function initListener() { $listeners = Application::AutoBuildCollection("Listener.php", IListener::class); (yield array_shift($listeners)); /** @var IListener $listener */ foreach ($listeners as $listener) { $port = $this->swoole->addlistener($listener->GetHost(), $listener->GetPort(), $listener->GetType()); if (is_array($listener->GetSetting())) { $port->set($listener->GetSetting()); } $this->_listenerConfigs[get_class($listener)] = ['Host' => $listener->GetHost(), 'Port' => $listener->GetPort(), 'Type' => $this->_getTypeName($listener->GetType())]; } }
function onReceive($serv, $fd, $from_id, $data) { if (!isset($this->clients[$fd])) { $this->serv->send($fd, "backend server not connected. please try reconnect."); $this->serv->close($fd); } else { echo microtime() . ": client receive\n"; $backend_socket = $this->clients[$fd]['socket']; $backend_socket->send($data); echo microtime() . ": send to backend\n"; echo str_repeat('-', 100) . "\n"; } }
function onReceive($serv, $fd, $from_id, $data) { //没有空闲的数据库连接 if (count($this->idle_pool) == 0) { //等待队列未满 if (count($this->wait_queue) < $this->wait_queue_max) { $this->wait_queue[] = array('fd' => $fd, 'sql' => $data); } else { $this->serv->send($fd, "request too many, Please try again later."); } } else { $this->doQuery($fd, $data); } }
function listen($host = '0.0.0.0', $port = 9510) { $swoole_setting = (require dirname(__DIR__) . '/configs/swoole.php'); $server = new swoole_server($host, $port, SWOOLE_BASE); $swoole_setting['open_eof_check'] = true; $swoole_setting['open_eof_split'] = true; $swoole_setting['package_eof'] = self::EOF; $server->set($swoole_setting); $server->on('WorkerStart', [$this, 'onStart']); $server->on('WorkerStop', [$this, 'onStop']); $server->on('receive', [$this, 'onReceive']); $this->server = $server; $this->server->start(); }
/** * TaskWorker收到任务时触发 * * @param \swoole_server $server * @param int $task_id * @param int $from_id * @param mixed $param */ public function OnTask(\swoole_server $server, $task_id, $from_id, $param) { //Log::Debug("Task accept task_id[$task_id] from_id[$from_id]"); Event::Listen('TaskReceived', [&$server, &$task_id, &$from_id, &$param]); //if($server->worker_id % 2 == 0) //{ // sleep(2); // if(rand(0, 100) > 50) // { // //return; // } //} Event::Listen('TaskFinished', [&$server, &$task_id, &$from_id, &$param]); $server->finish('finish'); }
private function createServer() { $server = new \swoole_server($this->host, $this->port, SWOOLE_PROCESS, SWOOLE_SOCK_TCP); $server->set($this->normalizedConfig()); $server->on('start', [$this, 'onServerStart']); $server->on('shutdown', [$this, 'onServerStop']); $server->on("receive", [$this, "onServerReceive"]); $server->on('workerStart', [$this, 'onWorkerStart']); $server->on('workerStop', [$this, 'onWorkerStop']); $server->on('close', [$this, 'onClose']); $server->on('task', [$this, 'onTask']); $server->on('finish', [$this, 'onFinish']); //onFinish return $server; }
public function serve() { $support_callback = ['start' => [$this, 'onStart'], 'managerStart' => [$this, 'onManagerStart'], 'workerStart' => [$this, 'onWorkerStart'], 'receive' => [$this, 'onReceive'], 'task' => null, 'finish' => null, 'workerStop' => [$this, 'onWorkerStop']]; foreach ($support_callback as $name => $callback) { // If has the dependency injection if (is_callable(Di::get($name))) { $callback = Di::get($name); } if ($callback !== null) { $this->serv->on($name, $callback); } } $this->serv->set($this->swoole_config); $this->serv->start(); }
public function onReceive(\swoole_server $server, $fd, $from_id, $data) { $data = trim($data); if ($data == 'Stop') { //停止 $server->shutdown(); $server->send($fd, 'success', $from_id); } else { if ($data == 'Stats') { //状态 $data = $server->stats(); $server->send($fd, json_encode($data), $from_id); } else { if ($data == 'Reload') { //重启 $server->reload(); $server->send($fd, 'success', $from_id); } else { if ($data == 'ResetTelnet') { //重置所有telnet链接 } else { $data = json_decode($data, true); if ($data['act'] == 'Telnet' && isset($data['ip']) && isset($data['cmd'])) { //执行命令 $service = TelnetEvent::getService($data['ip']); if ($service == null) { $result['code'] = 2; } else { if ($data['cmd'] > 0) { if (isset($data['arg'])) { $result['data'] = $service->exec($data['cmd'], $data['arg']); } else { $result['data'] = $service->exec($data['cmd']); } if ($result == null || $result['data'] == null) { $result = ['code' => 3]; } else { $result['code'] = 1; } } else { $service->getSwitch()->connect(); if ($service->getSwitch()->isConnect()) { $result['code'] = 1; } else { $result['code'] = 3; } } } $server->send($fd, json_encode($result), $from_id); } else { $server->send($fd, 'unknown command!', $from_id); } } } } } $server->close($fd); }