以下内容需要结合es的源码,不然可能会觉得跳跃.先描述下es启动的大致流程.es启动的时候注册异常处理函数以及加载配置文件.根据位置文件的设置选择启动哪种swoole服务.然后用一个事件注册类,注册swoole服务需要的回调函数handler. 在启动前根据配置文件是否启动consoleTcpserver子服务.其他服务可以在EasySwooleEvent::mainServerCreate中注册.es3和es2的区别,es3支持协程以及更加组件化.分为了http组件rpc组件等 根路径的执行路…
swoole已经升级到4了,主要的特性是更好的支持协程,easyswoole也为了更好支持协程推出了es3.我本地环境是php7.2.9 centos7 在github下载最新的3.0的demo.地址为:https://github.com/easy-swoole/demo git下载demo注意分支要是3.x  在xshell中选择执行路径输入:git clone -b 3.x https://github.com/easy-swoole/demo.git demo 安装依赖    cd de…
前文讲过可以通过配置开启一个tcp服务,叫做consoleTcpservice.EasySwoole\EasySwoole\Core::83行 (new TcpService(Config::getInstance()->getConf('CONSOLE'))); 这个就是一个console的Tcp子服务.然后可以自定义客户端去和主服务通信. 注意了源码注册了一个TcpParser,EasySwoole\EasySwoole\Console\TcpParser 这个解析器要求了数据的分包规则.…
demo在手,总得去试试看效果吧.我们先把默认的服务改成webserver,并且添加数据库的配置. 建立数据库,github里面有相关内容 CREATE TABLE `user_list` ( `userId` int(11) NOT NULL AUTO_INCREMENT, `account` varchar(45) NOT NULL, `password` varchar(45) NOT NULL, `session` varchar(45) DEFAULT NULL, `addTime`…
连接池的含义,很多都知道,比如mysql的数据库连接是有限的,一开始连接mysql创建N个连接,放到一个容器里,每次有请求去容器中取出,取出用完再放回去. es3demo里,有mysql的连接池. EasySwooleEvent::30行,执行initialize方法会注册一个MysqlPool::class MysqlPool是继承于AbstractPool的只实现了createObject方法来创建mysql连接对象 AbstractPool这个抽象类,里我们分析下2个函数getObj和re…
前文,我们访问地址的时候服务端会输出类似trace信息.那么原理是什么呢?其实es3已经把这个独立出来作为单独组件了,名字叫做Trace组件 在demo里的调用原理是 EasySwooleEvent::30行, initialize方法设置了链追踪器的,生成Token和链结束的回调 //调用链追踪器设置Token获取值为协程id TrackerManager::getInstance()->setTokenGenerator(function (){ return \Swoole\Corouti…
最近研究ICS4.0的Launcher,发现4.0和2.3有稍微点区别,但是区别不是特别大,所以我就先整理一下Launcher启动的大致流程. Launcher其实是贯彻于手机的整个系统的,时时刻刻都在运行,要是Launcher不运行了,手机就得黑屏了.Launcher的 LauncherMode=singletask,所以说不管Launcher启动了哪个应用,总有个Launcher的实例在堆栈中,并且位于栈底.点 击Home键进入到Launcher,上篇Android的全局键(home键/长按…
前文连接,阅读的时候最好参照EasySwoole2.1.2的源码 $inst->run();//启动服务 这里实际调用的是Core的start方法ServerManager::getInstance()->start(); 这个方法主要是启动swoole服务的 //创建主服务 $this->createMainServer(); 在这块代码里主要是核心,是在swoole执行start服务前设置相关配置以及配置相关回调函数.具体代码如下 先给服务器配置相关运行参数 $conf = Conf…
Solr4.8.0源码分析(24)之SolrCloud的Recovery策略(五) 题记:关于SolrCloud的Recovery策略已经写了四篇了,这篇应该是系统介绍Recovery策略的最后一篇了.本文主要介绍Solr的主从同步复制.它与前文<Solr4.8.0源码分析(22)之SolrCloud的Recovery策略(三)>略有不同,前文讲到的是SolrCloud的leader与replica之间的同步,不需要通过配置solrconfig.xml来实现.而本文主要介绍单机模式下,利用so…
Solr4.8.0源码分析(17)之SolrCloud索引深入(4) 前面几节以add为例已经介绍了solrcloud索引链建索引的三步过程,delete以及deletebyquery跟add过程大同小异,这里暂时就不介绍了.由于commit流程较为特殊,那么本节主要简要介绍下commit的流程. 1. SolrCloud的commit流程 SolrCloud的commit流程同样分为三步,本节主要简单介绍下三步过程. 1.1 LogUpdateProcessor LogUpdateProces…