ESD 是一个免费开源的,快速、简单的基于 Swoole4.3 最新特性的 PHP 协程开发框架。由 SwooleDistributed 与 EasySwoole 作者打造。ESD 可用于构建高性能的 Web 系统、API、中间件、基础服务等等。
功能特性预览:
协程框架:基于 Swoole 4.3的原生协程框架,自带常驻内存以及 Swoole 其它功能的封装。
多种混合协议通讯:HTTP 控制器与自定义路由 TCP、UDP、WEB_SOCKET 控制器
组件化:组件分为核心组件和应用组件,所有应用组件都是非必须的,开发者可以自定义,按需使用。
连接池:框架自带 Mysql/Redis/ampq 高效连接池,且实现所有连接断线重连。开发者不用关心连接,相应组件已经实现。
切面编程:框架容器管理的所有对象,都可以使用 AOP。使用AOP 可以使用在不改变实例内部的情况下,对实例对象的行为进行控制。
分布式与微服务:提供分布式与微服务的插件组织
注解系统:框架提供大量可使用的注解,比如注解路由,注解事务,注解缓存,注解验证等。 框架均提供注解与非注解的使用方式。
Tracing 链路追踪:通过加载Tracing插件可以实现服务链路性能的监控,支持微服务
灵活的注解功能
全局的依赖注入容器
基于 PSR-7 的 HTTP 消息实现
事件管理器
缓存
协程、异步任务投递
自定义用户进程
协程和同步阻塞客户端无缝自动切换
热更新自动 Reload
强大的日志系统
组件化
ESD从设计之初就实现了组件化模式,达到模块解耦和代码复用的效果。
➜ docker run -it --rm -p 8080:8080 -v $PWD:/data registry.cn-beijing.aliyuncs.com/anythink/esd:latest
_____ ____ ____ ____ _ _
| ____/ ___|| _ \ | _ \ _ _ _ __ | |_(_)_ __ ___ ___
| _| \___ \| | | | | |_) | | | | '_ \| __| | '_ ` _ \ / _ \
| |___ ___) | |_| | | _ <| |_| | | | | |_| | | | | | | __/
|_____|____/|____/ |_| \_\\__,_|_| |_|\__|_|_| |_| |_|\___|
ESD framework Runtime Environment
version 1.5 author by anythink
root@f41132062911:/data#
docker run -it --rm -p 8080:8080 -v $PWD:/data registry.cn-beijing.aliyuncs.com/anythink/esd:latest
请在 ESD 根目录运行容器,否则修改$PWD为代码根路径(windows需要用%cd%替换$PWD),如果修改了端口请把8080 修改为自己使用的端口. 镜像启动后的目录即挂载到主机的代码目录,注意 Mac 系统无法使用 inotify 热加载功能。 容器启动后按照安装步骤,运行框架。
4核8G SSD盘 腾讯云高IO型I2服务器压测,框架压测包含路由
worker_num = 4
swoole ab压测输出hello 平均 5.9QPS万
ESD框架 ab压测输出hello 平均 3.6QPS万
SD框架 ab压测输出hello 平均 1.3QPS万
压测数据来自:A-Smile
<?php use Yurun\Util\YurunHttp; use Yurun\Util\HttpRequest; // 设置默认请求处理器为 Swoole YurunHttp::setDefaultHandler(\Yurun\Util\YurunHttp\Handler\Swoole::class); // Swoole 处理器必须在协程中调用 go('test'); functio
PHP语言是一个短生命周期的Web编程语言,很多PHPer已经形成了fpm下编程的思维定势。实际上在Swoole出现之后,这种串行化编程的模式早已被打破。使用Swoole完全可以轻易实现更灵活的并发编程。 场景介绍 假设我们要做一个石头剪刀布的Web游戏,3个玩家同时提交竞猜后显示胜者。在传统串行化Web编程中,我们一般思路是这样: 设置 form 表单,用户提交竞猜后保存到 MySQL/Redi
本文档主要记录 Swoole 内核开发的各项规范、技术原因、讨论。 并行 进程池 线程池 TCP buffer reactor 线程 connection_list 内存管理 RingBuffer 环形内存池 全局变量 taskwait 的 result 内存 版本管理 奇偶数单双号原则 开发流程规范化 Docker Alpine 环境 编码风格 API 命名 C 语言符号优先级 为什么使用 bz
本文向大家介绍php基于协程实现异步的方法分析,包括了php基于协程实现异步的方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php基于协程实现异步的方法。分享给大家供大家参考,具体如下: github上php的协程大部分是根据这篇文章实现的:http://nikic.github.io/2012/12/22/Cooperative-multitasking-using-corou
swoole 的用法实际上对于大多数新手来说一直并不怎么友好,其实这不怪 swoole,只能怪萌新们确实底子不够,有些东西理解起来可能真的比较困难。今天斗胆尝试引入一个应用场景和简单的代码案例来做个简单的入门,算是抛砖头引和田玉吧。 老韩 wiki.swoole.com 以及一些社区中一直说 swoole 既可以同步又可以异步,我找一些原话,你们感受一下: Swoole 不仅支持异步,还支持同步。
本文向大家介绍基于Vue开发数字输入框组件,包括了基于Vue开发数字输入框组件的使用技巧和注意事项,需要的朋友参考一下 随着 Vue 越来越火热, 相关组件库也非常多啦, 只用轮子怎么够, 还是要造起来!!! 1、概述 Vue组件开发的API:props、events和slots 2、组件代码 github地址:https://github.com/MengFangui/VueInputNumbe
本文向大家介绍PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】,包括了PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP基于PDO调用sqlserver存储过程的方法。分享给大家供大家参考,具体如下: 由于业务这边存储过程一直在sqlserver上面,所以要用php去调用它,然而我们本地的是
这一节中我们会继续介绍下 Web 开发中的一些基础知识,包括常用术语、HTTP 协议、URL 的组成部分,以及网站运行原理和开发的流程。只有理解了这些基础知识,才能继续后续的 Django 学习。 1. Web 服务中的常用术语 在正式开始 Django 项目开发之前,我们需要掌握一些 Web 开发中常见的术语。Web 服务和网站在某种程度上是等价的,因此后面描述时并不区分这两个概念。 客户端:用