function my_onReceive(swoole_server $serv, $fd, $from_id, $data) { $data = json_decode(trim($data), TRUE); $cmd = $data['cmd']; if ($cmd == "reload") { $serv->reload($serv); } elseif ($cmd == "task") { $task_id = $serv->task($data, 0); $info = "Dispath AsyncTask: id=" . $task_id; $serv->send($fd, $info); echo $info . "\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: ' . json_encode($data), $from_id); if (isset($data['cmd'])) { switch ($data['cmd']) { case 'get': $key = $data['key']; $res = $serv->taskwait($data, 0.5, 0); $serv->send($fd, PHP_EOL . "get " . $res['key'] . ": " . $res['val']); break; case "set": $serv->task($data, 0); break; case "del": $serv->task($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 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); } }
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); }
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"); echo "Dispath AsyncTask: id={$task_id}\n"; } elseif ($cmd == "taskwait") { $result = $serv->taskwait("hello world", 2); echo "SyncTask: result={$result}\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 (substr($cmd, 0, 5) == "close") { $close_fd = substr($cmd, 6); $serv->close($close_fd); } elseif ($cmd == "shutdown") { $serv->shutdown(); } else { $serv->send($fd, 'Swoole: ' . $data, $from_id); //$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); }
function my_onReceive(swoole_server $serv, $fd, $from_id, $data) { //my_log("received: $data"); $cmd = trim($data); if ($cmd == "reload") { $serv->reload($serv); } elseif ($cmd == "task") { $task_id = $serv->task("hello world"); echo "Dispath AsyncTask: id={$task_id}\n"; } elseif ($cmd == "taskwait") { $result = $serv->taskwait("hello world", 2); echo "SyncTask: result={$result}\n"; } elseif ($cmd == "hellotask") { $serv->task("hellotask"); } elseif ($cmd == "close") { $serv->send($fd, "close connection\n"); $result = $serv->close($fd); } elseif ($cmd == "info") { $info = $serv->connection_info($fd); $serv->send($fd, 'Info: ' . var_export($info, true) . PHP_EOL); } elseif ($cmd == "stats") { $serv_stats = $serv->stats(); $serv->send($fd, 'Stats: ' . var_export($serv_stats, true) . PHP_EOL); } elseif ($cmd == "broadcast") { broadcast($serv, $fd, "hello from {$fd}\n"); } elseif ($cmd == "error") { hello_no_exists(); } elseif (substr($cmd, 0, 5) == "close") { $close_fd = substr($cmd, 6); $serv->close($close_fd); } elseif ($cmd == "shutdown") { $serv->shutdown(); } else { $ret = $serv->send($fd, 'Swoole: ' . $data, $from_id); //var_dump($ret); //$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); }
function my_onReceive(swoole_server $serv, $fd, $from_id, $data) { my_log("Worker#{$serv->worker_pid} Client[{$fd}@{$from_id}]: received: {$data}"); $cmd = trim($data); if ($cmd == "reload") { $serv->reload(); } elseif ($cmd == "task") { $task_id = $serv->task("task-" . $fd); echo "Dispath AsyncTask: id={$task_id}\n"; } elseif ($cmd == "taskwait") { $result = $serv->taskwait("taskwait"); if ($result) { $serv->send($fd, "taskwaitok"); } echo "SyncTask: result=" . var_export($result, true) . "\n"; } elseif ($cmd == "hellotask") { $serv->task("hellotask"); } elseif ($cmd == "sendto") { $serv->sendto("127.0.0.1", 9999, "hello world"); } elseif ($cmd == "close") { $serv->send($fd, "close connection\n"); $result = $serv->close($fd); } elseif ($cmd == "info") { $info = $serv->connection_info(strval($fd), $from_id); var_dump($info["remote_ip"]); $serv->send($fd, 'Info: ' . var_export($info, true) . PHP_EOL); } elseif ($cmd == 'proxy') { $serv->send(1, "hello world\n"); } elseif ($cmd == 'sleep') { sleep(10); } elseif ($cmd == 'foreach') { foreach ($serv->connections as $fd) { echo "conn : {$fd}\n"; } return; } elseif ($cmd == 'tick') { $serv->tick(2000, function ($id) { echo "tick #{$id}\n"; }); } elseif ($cmd == 'addtimer') { $serv->addtimer(3000); } elseif ($cmd == "list") { $start_fd = 0; echo "broadcast\n"; while (true) { $conn_list = $serv->connection_list($start_fd, 10); if (empty($conn_list)) { echo "iterates finished\n"; break; } $start_fd = end($conn_list); var_dump($conn_list); } } elseif ($cmd == "list2") { foreach ($serv->connections as $con) { var_dump($serv->connection_info($con)); } } elseif ($cmd == "stats") { $serv_stats = $serv->stats(); $serv->send($fd, 'Stats: ' . var_export($serv_stats, true) . PHP_EOL); } elseif ($cmd == "broadcast") { broadcast($serv, $fd, "hello from {$fd}\n"); } elseif ($cmd == "error") { hello_no_exists(); } elseif ($cmd == "exit") { exit("worker php exit.\n"); } elseif (substr($cmd, 0, 5) == "close") { $close_fd = substr($cmd, 6); $serv->close($close_fd); } elseif ($cmd == "shutdown") { $serv->shutdown(); } elseif ($cmd == 'sendbuffer') { $buffer = G::getBuffer($fd); $buffer->append("hello\n"); $serv->send($fd, $buffer); } else { $ret = $serv->send($fd, 'Swoole: ' . $data, $from_id); var_dump($ret); //$serv->close($fd); } //echo "Client:Data. fd=$fd|from_id=$from_id|data=$data"; // $serv->after( // 800, function () { // echo "hello"; // } // ); //swoole_server_send($serv, $other_fd, "Server: $data", $other_from_id); }
/** * only reload task worker */ public function reload() { $this->server->reload(); }
function my_onReceive(swoole_server $serv, $fd, $from_id, $data) { my_log("Worker#{$serv->worker_pid} Client[{$fd}@{$from_id}]: received: {$data}"); $cmd = trim($data); if ($cmd == "reload") { $serv->reload(); } elseif ($cmd == "task") { $serv->task("task-" . $fd); } elseif ($cmd == "taskwait") { $result = $serv->taskwait("taskwait"); if ($result) { $serv->send($fd, "taskwaitok"); } } elseif ($cmd == "taskWaitMulti") { $tasks = array('taskWaitMulti', 'taskWaitMulti'); $result = $serv->taskWaitMulti($tasks); if (is_array($result)) { $serv->send($fd, "taskWaitMulti OK"); } else { $serv->send($fd, "taskWaitMulti error"); } } elseif ($cmd == "hellotask") { $serv->task("hellotask"); } elseif ($cmd == "sendto") { $serv->sendto("127.0.0.1", 9999, "hello world"); } elseif ($cmd == "close") { $serv->close($fd); } elseif ($cmd == "info") { $info = $serv->connection_info(strval($fd), $from_id); $serv->send($fd, serialize($info)); } elseif ($cmd == 'proxy') { $serv->send(1, "hello world\n"); } elseif ($cmd == 'sleep') { sleep(10); } elseif ($cmd == 'sendfile') { $serv->sendfile($fd, __DIR__ . '/test.jpg'); } elseif ($cmd == 'foreach') { foreach ($serv->connections as $fd) { echo "conn : {$fd}\n"; } return; } elseif ($cmd == 'tick') { $serv->tick(1000, function ($id) use($serv, $fd) { $serv->send($fd, "tick"); $serv->clearTimer($id); }); } elseif ($cmd == 'after') { $serv->after(1000, function ($id) use($serv, $fd) { $serv->send($fd, "after"); }); } elseif ($cmd == "list") { $start_fd = 0; echo "broadcast\n"; while (true) { $conn_list = $serv->connection_list($start_fd, 10); if (empty($conn_list)) { echo "iterates finished\n"; break; } $start_fd = end($conn_list); var_dump($conn_list); } } elseif ($cmd == "list2") { foreach ($serv->connections as $con) { var_dump($serv->connection_info($con)); } } elseif ($cmd == "stats") { $serv_stats = $serv->stats(); $serv->send($fd, 'Stats: ' . var_export($serv_stats, true) . "\ncount=" . count($serv->connections) . PHP_EOL); } elseif ($cmd == "broadcast") { broadcast($serv, $fd, "hello from {$fd}\n"); } elseif ($cmd == "error") { hello_no_exists(); } elseif ($cmd == "exit") { exit("worker php exit.\n"); } elseif (substr($cmd, 0, 5) == "close") { $close_fd = substr($cmd, 6); $serv->close($close_fd); } elseif ($cmd == "shutdown") { $serv->shutdown(); } elseif ($cmd == "fatalerror") { require __DIR__ . '/php/error.php'; } elseif ($cmd == 'sendbuffer') { $buffer = G::getBuffer($fd); $buffer->append("hello\n"); $serv->send($fd, $buffer); } elseif ($cmd == 'defer') { $serv->defer(function () use($fd, $serv) { $serv->close($fd); $serv->defer(function () { echo "deferd\n"; }); }); $serv->send($fd, 'Swoole: ' . $data, $from_id); } elseif ($cmd == 'big_resp') { $serv->send($fd, str_repeat('A', 256 * 1024)); } elseif ($cmd == 'big_task') { $serv->task($fd . ' ' . str_repeat('A', 256 * 1024 - 8)); } else { $serv->send($fd, 'Swoole: ' . $data, $from_id); //$serv->close($fd); } //echo "Client:Data. fd=$fd|from_id=$from_id|data=$data"; // $serv->after( // 800, function () { // echo "hello"; // } // ); //swoole_server_send($serv, $other_fd, "Server: $data", $other_from_id); }
public function onReceive(\swoole_server $server, $fd, $fromId, $data) { if ($data == $this->preSysCmd . "reload") { $ret = intval($server->reload()); $server->send($fd, $ret); } elseif ($data == $this->preSysCmd . "info") { $info = $server->connection_info($fd); $server->send($fd, 'Info: ' . var_export($info, true) . PHP_EOL); } elseif ($data == $this->preSysCmd . "stats") { $serv_stats = $server->stats(); $server->send($fd, 'Stats: ' . var_export($serv_stats, true) . PHP_EOL); } elseif ($data == $this->preSysCmd . "shutdown") { $server->shutdown(); } else { $this->protocol->onReceive($server, $fd, $fromId, $data); } }
/** * 对外提供接口 * * @param $server swoole_server对象 * @param $fd TCP客户端连接的文件描述符 * @param $from_id TCP连接所在的Reactor线程ID * @param $data 收到的数据内容 */ 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'] == '9504') { echo $data . PHP_EOL; 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); //任务数据 $list = $data['list']; //请求类型 $type = $data['type']; switch ($type) { //添加定时器 case 'add': //添加定时器 $timeInterval = $list['s_interval']; $taskId = $list['s_id']; $timerId = $server->tick($timeInterval, array($this, 'onTimer'), $list); //更新任务 Task::updateTimer($taskId, $timerId); $data = array('code' => 200, 'msg' => '添加定时器成功', 'data' => null); $server->send($fd, json_encode($data)); break; //修改定时器 //修改定时器 case 'edit': //修改url,定时器间隔时间 $data = array('code' => 200, 'msg' => '修改定时器成功', 'data' => null); $server->send($fd, json_encode($data)); break; //删除定时器 //删除定时器 case 'del': echo '删除定时器: ' . date('Y-m-d H:i:s') . PHP_EOL; //任务ID $taskId = $list['s_id']; //定时器ID $timerId = $list['s_timerId']; //删除定时器 swoole_timer_clear($timerId); //删除任务 Task::delTask($taskId); $data = array('code' => 200, 'msg' => '删除定时器成功', 'data' => null); $server->send($fd, json_encode($data)); break; default: $data = array('code' => 500, 'msg' => '非法请求', 'data' => null); $server->send($fd, json_encode($data)); break; } } }
public final function onReceive(\swoole_server $serv, $fd, $from_id, $data) { $requestInfo = Packet::packDecode($data); #decode error if ($requestInfo["code"] != 0) { $pack["guid"] = $requestInfo["guid"]; $req = Packet::packEncode($requestInfo); $serv->send($fd, $req); return true; } else { $requestInfo = $requestInfo["data"]; } #api was not set will fail if (!is_array($requestInfo["api"]) && count($requestInfo["api"])) { $pack = Packet::packFormat("param api is empty", 100003); $pack["guid"] = $requestInfo["guid"]; $pack = Packet::packEncode($pack); $serv->send($fd, $pack); return true; } $guid = $requestInfo["guid"]; //prepare the task parameter $task = array("type" => $requestInfo["type"], "guid" => $requestInfo["guid"], "fd" => $fd, "protocol" => "tcp"); //different task type process switch ($requestInfo["type"]) { case DoraConst::SW_MODE_WAITRESULT_SINGLE: $task["api"] = $requestInfo["api"]["one"]; $taskid = $serv->task($task); //result with task key $this->taskInfo[$fd][$guid]["taskkey"][$taskid] = "one"; return true; break; case DoraConst::SW_MODE_NORESULT_SINGLE: $task["api"] = $requestInfo["api"]["one"]; $serv->task($task); //return success deploy $pack = Packet::packFormat("transfer success.已经成功投递", 100001); $pack["guid"] = $task["guid"]; $pack = Packet::packEncode($pack); $serv->send($fd, $pack); return true; break; case DoraConst::SW_MODE_WAITRESULT_MULTI: foreach ($requestInfo["api"] as $k => $v) { $task["api"] = $requestInfo["api"][$k]; $taskid = $serv->task($task); $this->taskInfo[$fd][$guid]["taskkey"][$taskid] = $k; } return true; break; case DoraConst::SW_MODE_NORESULT_MULTI: foreach ($requestInfo["api"] as $k => $v) { $task["api"] = $requestInfo["api"][$k]; $serv->task($task); } $pack = Packet::packFormat("transfer success.已经成功投递", 100001); $pack["guid"] = $task["guid"]; $pack = Packet::packEncode($pack); $serv->send($fd, $pack); return true; break; case DoraConst::SW_CONTROL_CMD: switch ($requestInfo["api"]["cmd"]["name"]) { case "getStat": $pack = Packet::packFormat("OK", 0, array("server" => $serv->stats())); $pack["guid"] = $task["guid"]; $pack = Packet::packEncode($pack); $serv->send($fd, $pack); return true; break; case "reloadTask": $pack = Packet::packFormat("OK", 0, array("server" => $serv->stats())); $pack["guid"] = $task["guid"]; $pack = Packet::packEncode($pack); $serv->send($fd, $pack); $serv->reload(true); return true; break; default: $pack = Packet::packFormat("unknow cmd", 100011); $pack = Packet::packEncode($pack); $serv->send($fd, $pack); unset($this->taskInfo[$fd]); break; } break; case DoraConst::SW_MODE_ASYNCRESULT_SINGLE: $task["api"] = $requestInfo["api"]["one"]; $taskid = $serv->task($task); $this->taskInfo[$fd][$guid]["taskkey"][$taskid] = "one"; //return success $pack = Packet::packFormat("transfer success.已经成功投递", 100001); $pack["guid"] = $task["guid"]; $pack = Packet::packEncode($pack); $serv->send($fd, $pack); return true; break; case DoraConst::SW_MODE_ASYNCRESULT_MULTI: foreach ($requestInfo["api"] as $k => $v) { $task["api"] = $requestInfo["api"][$k]; $taskid = $serv->task($task); $this->taskInfo[$fd][$guid]["taskkey"][$taskid] = $k; } //return success $pack = Packet::packFormat("transfer success.已经成功投递", 100001); $pack["guid"] = $task["guid"]; $pack = Packet::packEncode($pack); $serv->send($fd, $pack); break; default: $pack = Packet::packFormat("unknow task type.未知类型任务", 100002); $pack = Packet::packEncode($pack); $serv->send($fd, $pack); //unset($this->taskInfo[$fd]); return true; } return true; }
function my_onReceive(swoole_server $serv, $fd, $from_id, $data) { my_log("Worker#{$serv->worker_pid} Client[{$fd}@{$from_id}]: received: {$data}"); $cmd = trim($data); if ($cmd == "reload") { $serv->reload(); } elseif ($cmd == "task") { $task_id = $serv->task("task " . $fd); echo "Dispath AsyncTask: id={$task_id}\n"; } elseif ($cmd == "taskclose") { $serv->task("close " . $fd); echo "close the connection in taskworker\n"; } elseif ($cmd == "tasksend") { $serv->task("send " . $fd); } elseif ($cmd == "bigtask") { $serv->task(str_repeat('A', 8192 * 5)); } elseif ($cmd == "taskwait") { $result = $serv->taskwait("taskwait"); if ($result) { $serv->send($fd, "taskwaitok"); } echo "SyncTask: result=" . var_export($result, true) . "\n"; } elseif ($cmd == "taskWaitMulti") { $result = $serv->taskWaitMulti(array(str_repeat('A', 8192 * 5), str_repeat('B', 8192 * 6), str_repeat('C', 8192 * 8))); if ($result) { $resp = "taskWaitMulti ok\n"; foreach ($result as $k => $v) { $resp .= "result[{$k}] length=" . strlen($v) . "\n"; } $serv->send($fd, $resp); } else { $serv->send($fd, "taskWaitMulti error\n"); } } elseif ($cmd == "hellotask") { $serv->task("hellotask"); } elseif ($cmd == "taskcallback") { $serv->task("taskcallback", -1, function (swoole_server $serv, $task_id, $data) { echo "Task Callback: "; var_dump($task_id, $data); }); } elseif ($cmd == "sendto") { $serv->sendto("127.0.0.1", 9999, "hello world"); } elseif ($cmd == "close") { $serv->send($fd, "close connection\n"); $result = $serv->close($fd); } elseif ($cmd == "info") { $info = $serv->connection_info(strval($fd), $from_id); var_dump($info["remote_ip"]); $serv->send($fd, 'Info: ' . var_export($info, true) . PHP_EOL); } elseif ($cmd == 'proxy') { $serv->send(1, "hello world\n"); } elseif ($cmd == 'sleep') { sleep(10); } elseif ($cmd == 'foreach') { foreach ($serv->connections as $fd) { echo "conn : {$fd}\n"; } return; } elseif ($cmd == 'tick') { $serv->tick(2000, function ($id) { echo "tick #{$id}\n"; }); } elseif ($cmd == 'addtimer') { $serv->addtimer(3000); } elseif ($cmd == "list") { $start_fd = 0; echo "broadcast\n"; while (true) { $conn_list = $serv->connection_list($start_fd, 10); if (empty($conn_list)) { echo "iterates finished\n"; break; } $start_fd = end($conn_list); var_dump($conn_list); } } elseif ($cmd == "list2") { foreach ($serv->connections as $con) { var_dump($serv->connection_info($con)); } } elseif ($cmd == "stats") { $serv_stats = $serv->stats(); $serv->send($fd, 'Stats: ' . var_export($serv_stats, true) . "\ncount=" . count($serv->connections) . PHP_EOL); } elseif ($cmd == "broadcast") { broadcast($serv, $fd, "hello from {$fd}\n"); } elseif ($cmd == "error") { hello_no_exists(); } elseif ($cmd == "exit") { exit("worker php exit.\n"); } elseif ($cmd == 'pause') { echo "pause receive data. fd={$fd}\n"; $serv->pause($fd); } elseif (substr($cmd, 0, 6) == "resume") { $resume_fd = substr($cmd, 7); $serv->resume($resume_fd); } elseif (substr($cmd, 0, 5) == "close") { $close_fd = substr($cmd, 6); $serv->close($close_fd); } elseif ($cmd == "shutdown") { $serv->shutdown(); } elseif ($cmd == "fatalerror") { require __DIR__ . '/php/error.php'; } elseif ($cmd == 'sendbuffer') { $buffer = G::getBuffer($fd); $buffer->append("hello\n"); $serv->send($fd, $buffer); } elseif ($cmd == 'defer') { $serv->defer(function () use($fd, $serv) { $serv->close($fd); $serv->defer(function () { echo "deferd\n"; }); }); $serv->send($fd, 'Swoole: ' . $data, $from_id); } else { $serv->send($fd, 'Swoole: ' . $data, $from_id); //$serv->close($fd); } //echo "Client:Data. fd=$fd|from_id=$from_id|data=$data"; // $serv->after( // 800, function () { // echo "hello"; // } // ); //swoole_server_send($serv, $other_fd, "Server: $data", $other_from_id); }
/** * listen on task finish * * @param \swoole_server $serv * @param $task_id * @param $data */ public function on_finish(\swoole_server $serv, $task_id, $data) { echo "Task {$task_id} finish\n"; $serv->reload(); return; }
/** * 得新加载 * @return [type] [description] */ public function reload(\swoole_server $serv, $fd = '', $from_id = '', $data = '') { $serv->reload(); }