前言 这段时间本身比较忙,也很少在关注技术相关的点,上个月空了刚好有时间看看群里,结果发现大家在讨论协程以及webman/workerman的劣势-阻塞退化问题,本来说是稍稍提两下实现方向,结果一来二去直接弄了一个插件出来,经过反反复复修改,最后发布了webman-coroutine插件 现状 workerman/webman的阻塞退化问题 workerman是标准的master/worker多进程模型,master...
前言 目前我是一名Golang/Python开发工程师,之前是主要使用PHP进行开发的传统web后端工程师,后面因为工作原因开始接触并使用Python和Golang来做一些开发工作,涉及到数据分析数仓建设相关及部分游戏相关的开发;也因为工作原因接触到了很多其他语言的特性或者是其他语言团体推崇的技术方向方案。 我非常喜欢PHP,生活中工作中几乎是能用PHP解决的都尽可能使用PHP,同时也很推崇PHP-cli的开发模式,...
前言 今年接触了一个策略类手游相关的项目,后端本身计划是使用skynet进行开发的,后来结合项目的时间紧急程度和客户端开发组讨论后决定使用PHP进行快速开发,后期再使用其他语言框架进行拆分业务;综合考虑最后选用了webman作为主要开发框架。 整体项目分为配置服务、http-api服务、websocket服务三大部分,其中配置管理主要是兼容客户端生成的配置数据进行导入导出转换加载,底层使用MySQL进行储存,多服务间...
增加一个LongPollingResponse类,继承support\Response namespace support; use Respect\Validation\Rules\Time; use Workerman\Timer; /** * Class LongPollingResponse * @package support */ class LongPollingResponse ext...
workbunny/process 我在做非常轻量的任务调度服务的时候刚好顺带撸了一下PHP多进程相关的内容,总共写了不到300行代码,能够帮助理解workerman是如何进行多进程处理的; 已经做了一些测试用例,把基本上常规的操作都覆盖了,随后还会补充更多的测试做覆盖; 另外说一下,这玩意儿其实可以用在workerman/webman里,当然这种操作比较骚(不建议,毕竟这是进程不是线程); 可以进行进程的嵌套for...
🐇 最新更新于2020-06-02 前言 最早接触reactor模型的时候,应该是在参与一个叫zanphp项目的时候,他是一个类似swoole的php拓展项目,当然它们之间的故事我就不多说了,也有一些冲突和迷茫;在那个时间段的PHP发展还是很蓬勃向上的,那时候的滴滴、有赞、百度都有很多很多PHP项目,那时候的原生PHP有许多许多的瓶颈,所以国内那时候涌现了很多使用C来为PHP加速的开发者。 随着PHP慢慢发展,P...
前言 我目前所在的部门主要是负责公司的数据相关的内容,可以理解为数据统计,做的工作其实也比较复杂,除了做一些数据统计分析业务之外,需要做一些基础服务的开发;我部门因为内部开发语言并不统一,在这种情况下,项目被动的分成了A\B\C\D等子项目,并没有将项目合并到一个项目中开发,在这种过程中,被动的接受了SOA这样的结构。 A项目是一个任务的调度分配服务,可以理解为一个大型的脚本/定时执行器,有点类似与现在比较流行的se...
webman刚出来的时候我阅读过webman的代码,也阅读过其他框架的代码,然后我自己撸了一个框架casualman,最早单纯只是为了玩,后面我把他运用在了公司部分项目的生产环境,已经稳定运行了半年以上了。 在这个过程中,结合我自己的一些个人习惯和我看到的其他框架的一些好的地方,我发现webman的代码在一些地方可以被建议: 入口文件start.php比较凌乱臃肿 其实本着可以用就没问题的思路,我觉得代码写成什么样,...
这个项目由来很久了,大概至少有6年的历史,最早我工作的时候接触的一个项目叫struct,他可以把数组映射到对象属性上进行数据类型内容等判断或者过滤,也可以进行转换,也可以自行注册handle进行过滤、判断;后来我把这个项目重构了一下,适用在常驻内存的环境下,同时,这个项目也是我用在生产环境中的一个项目; 这个项目有点像残疾的注解,不过我觉得用起来还挺好的,所以推荐给大家 测试覆盖率应该超过了80%,常用的几种方案都是...
我在使用该项目过程中,曾出现过timer无限制递增的情况,也出现过服务端主动踢出连接无法消费等问题,遂自己重写了一个amqp客户端; 后来我回过头观察分析workerman/rabbitmq源码的时候,发现了一些可以被建议的地方: 源码在如下位置会反复创建定时器 Client.php 160 - 170 行位置已经创建了一个持续的定时器 })->then(function () { ...