我们来看分享下具体源码:php-msf: https://github.com/pinguo/php-msf
源码解读也做了一段时间了, 总结一下自己的心得:
抓住 生命周期, 让代码在你脑海中 跑起来
分析架构, 关键字 分层 边界 隔离
一个好的框架, 弄清楚 生命周期 和 架构, 基本就已经到了 熟悉 的状态了, 之后是填充细节和编码熟练了
这里再介绍几个次重要的心得:
弄明白这个工具擅长干什么, 适合干什么. 这个信息也非常容易获取到, 工具的文档通常都会显眼标注出来, 可以通过这些 功能/特性, 尝试以点见面
从工程化的角度去看这个项目, 主要和上面的 架构 区分, 在处理核心业务, 也就是上面的 功能/特性 外, 工程化还涉及到 安全/测试/编码规范/语言特性 等方面, 这些也是平时在写业务代码时思考较少并且实践较少的部分
工具的使用, 推荐我现在使用的组合: phpstorm + 百度脑图 + Markdown笔记 + blog和 php-msf 的渊源等写技术生活相关的 blog 再来和大家八, 直接上菜.
生命周期 & 架构
官方文档制作了一张非常好的图: 处理请求流程图. 推荐各位同仁, 有闲暇时制作类似的图, 对思维很有的帮助.
根据这张图来思考 生命周期 & 架构, 这里就不赘述了, 这里分析一下 msf 中一些技术点:
协程相关知识
msf 中技术点摘录
协程
我会用我的方式来讲解, 如果需要深入了解的, 可以看我后面推荐的资源.
类 vs 对象 是一组很重要的概念. 类代表我们对事物的抽象, 这个抽象的能力在我们以后会一直用到, 希望大家有意识的培养这方面的意识, 至少可以起到触类旁通的作用. 对象是 实例化 的类, 是 真正干活的, 我们要讨论的 协程, 就是这样一个 真正干活的 角色.
协程从哪里来, 到哪里去, 它是干什么的?
想一想这几个简单的问题, 也许你对协程的理解就更深刻了, 记住这几个关键词:
产生. 需要有地方来产生协程, 你可能不需要知道细节, 但是需要知道什么时候发生了
调度. 肯定是有很多协程一起工作的, 所以需要调度, 怎么调度的呢?
销毁. 是否会销毁? 什么时候销毁?
现在, 我们再来看看协程的使用方式对比, 这里注意一下, 我没有用 协程的实现方式对比, 因为很多时候, 需求实际是这样的:
怎么实现我不管, 我选最好用的.
// msf - 单次协程调度$response = yield $this->getRedisPool('tw')->get('apiCacheForABCoroutine');// msf - 并发协程调用$client1 = $this->getObject(Client::class, ['http://www.baidu.com/']);yield $client1->goDnsLookup();$client2 = $this->getObject(Client::class, ['http://www.qq.com/']);yield $client2->goDnsLookup();$result[] = yield $client1->goGet('/');$result[] = yield $client2->goGet('/');
新闻热点
疑难解答