合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
>[info] 探究服务方法 而我们目前所需要构建的需要实现的就是一个<span style="color:red;">**服务** </span>,一个可以扩展的服务具备对客户的连接,并处理自定义的扩展事件任务。 ![](https://img.kancloud.cn/af/23/af2346ee2edd56b3a19ae7718e4adf2f_811x423.png) >[info] 构建基础服务结构 最终我们便会构建如下结构的基础服务WorkBase,其他worker会基于这个完善里面的accept。 ![](https://img.kancloud.cn/5d/1a/5d1aea2d3caacf0f71b0f5c900ac9541_842x396.png) 1. **在 iostar\src 下构建超类 WorkerBase** ~~~ <?php namespace IoStar; abstract class WorkerBase { // 服务 protected $server; // 事件 protected $events = [ /* // 消息 'receive' => null, // 连接 'connect' => null,*/ ]; protected $config ; public function __construct($host , $port) { // 实例化socket服务端 $this->server = stream_socket_server("tcp://" . $host . ":" . $port); dd(swoole_get_local_ip()['ens33'] . ":9501" , '启动服务'); } private function accetp(){} /** * @title 注册事件 * @param $event @describe 事件名称 * @param $call @describe 闭包 */ public function on($event , $call) { // 注册事件 $this->events[strtolower($event)] = $call; } public function set() { } public function send($client , $data) { } public function colose() { } /** * @title 启动服务 */ public function start() { // 调用建立连接 $this->accetp(); } } ~~~ 2. **在 iostar\src\Blocking 下构建Blocking** ~~~ <?php namespace IoStar\Blocking; use IoStar\WorkerBase; class Worker extends WorkerBase { public function accept() { } } ~~~ 3. **在 iostar\test\blocking 下构建阻塞测试结构** ~~~ <?php // 引入composer 自动加载 require_once __DIR__ . '/../../vendor/autoload.php'; use IoStar\Blocking\Worker; $server = new Worker('0.0.0.0' , 9501); $server->on('connect' , function ($server , $client){ }); $server->on('receive' , function ($server , $client , $data){ }); $server->on('close' , function ($server , $client){ }); $server->start(); ~~~ * **目录结构效果图** ![](https://img.kancloud.cn/86/cf/86cfb7dcd409e93ee1468075eef8340a_1117x765.png) >[info] 执行效果 ![](https://img.kancloud.cn/66/4f/664f083286feb40bd9096aedfea3df60_403x110.png)