08 2018 档案
Swoole 心跳检测
摘要:Swoole的心跳检测特别简单,只需要配置 heartbeat_check_interval,heartbeat_idle_time就可以了。 heartbeat_check_interval:表示服务器隔几秒检测超时。要小于heartbeat_idle_time。 heartbeat_idle_t 阅读全文
posted @ 2018-08-23 11:45 invokermiracle 阅读(2119) 评论(0) 推荐(0)
Swoole addProcess的使用
摘要:addProcess函数 是添加一个用户自定义的工作进程。这个有什么用呢?服务在启动后,可以用于监控、上报或者其他特殊的任务。 注意这个添加的进程是被manager进程管理的。如果这个添加的用户进程经常exit的话,会不断的被manager拉起。所以这个用户进程需要守护,最简单就是让它是一个死循环, 阅读全文
posted @ 2018-08-23 11:19 invokermiracle 阅读(901) 评论(0) 推荐(0)
Swoole 理解manager进程和worker进程的启动顺序,以及演示如何停止或者重启服务端。
摘要:测试的代码主要功能:开启一个tcp服务器。然后设置了管理进程和工作进程start的回调进行更名。设置了pid_file保存了服务端启动的mast进程。 开启服务器后 查看进程,在server->start 后,拉起workNum+2(master,manager进程)。 然后查看pid_file里的 阅读全文
posted @ 2018-08-22 20:19 invokermiracle 阅读(2201) 评论(0) 推荐(0)
Swoole 网络通信协议,固定包头。
摘要:网络通信过程中,可能会出现分包和合包的情况。具体情况如https://wiki.swoole.com/wiki/page/484.html文档所讲的。这里测试了下固定包头的协议。示例代码如下 1.解包封装的方法 2.服务端 tcpServer.php 启动服务端 3 客户端 tcpClient.ph 阅读全文
posted @ 2018-08-22 18:51 invokermiracle 阅读(843) 评论(0) 推荐(0)
gdb调试技巧 找到php执行进程当前执行的代码
摘要:假设线上有一段php脚本,突然在某天出问题了,不处理但是进程没有退出。这种情况可能是异常休眠或者是有段死循环代码,但是我们怎么定位呢,我们这个时候最想知道的应该是这个脚本在此刻在做什么吧。这个是gdb+zbacktrace就有用了 首先随便写一个测试脚本test.php,里面就写一个sleep函数, 阅读全文
posted @ 2018-08-22 11:29 invokermiracle 阅读(503) 评论(0) 推荐(0)
PHP 获取周,月列表
摘要:PHP的date函数以及strtotime函数是很强大的。基本上围绕这2个函数就能处理绝大多数日常开发中日期的处理。 假设有一个需求是按周,月获取最近7周和最近7月的查询。那么我们肯定要划分出时间区间。 #先按月划分,获取上个月 我们一开始肯定想到这多简单啊 但是有没有想过如果是发生在7月的31号( 阅读全文
posted @ 2018-08-20 16:12 invokermiracle 阅读(323) 评论(0) 推荐(0)
四 分析easyswoole源码(启动服务&Cache组件原理)
摘要:前文提到的在系统设置Cache组件 Cache::getInstance()的时候,会去调用processManager去创建Cache的进程,然后以管道通信的方式进行设置缓存和获取缓存。 Cache是以单例模式实现的。构造器会进行如下操作 ProcessManager::getInstance() 阅读全文
posted @ 2018-08-07 18:57 invokermiracle 阅读(1370) 评论(0) 推荐(0)
三 分析easyswoole源码(启动服务&TableManager,略提及Cache工具的原理)
摘要:前文连接,讲了es是如何启动swoole服务的。 里面有一个工具类TableManager。这个类为了处理进程间数据共享。是对swoole_table的一层封装swoole_table一个基于共享内存和锁实现的超高性能,并发数据结构。用于解决多进程/多线程数据共享和同步加锁问题。 TableMana 阅读全文
posted @ 2018-08-07 10:54 invokermiracle 阅读(1209) 评论(0) 推荐(0)
二 分析easyswoole源码(启动服务)
摘要:前文连接,阅读的时候最好参照EasySwoole2.1.2的源码 这里实际调用的是Core的start方法ServerManager::getInstance()->start(); 这个方法主要是启动swoole服务的 在这块代码里主要是核心,是在swoole执行start服务前设置相关配置以及配 阅读全文
posted @ 2018-08-06 16:28 invokermiracle 阅读(2223) 评论(0) 推荐(0)
一 分析easyswoole源码(启动服务)
摘要:分析easyswoole源码 1以启动为例 //检查是否已经安装 installCheck();//检查锁文件是否存在,不存在结束 //启动服务 serverStart showLogo();//显示logo $conf = Conf::getInstance();//获取config单例 $ins 阅读全文
posted @ 2018-08-06 14:51 invokermiracle 阅读(1942) 评论(0) 推荐(0)