# beyod - 高性能分布式、事件驱动、异步非阻塞php socket网络应用框架

## 简介

beyod是基于Libevent/epoll/Yii2 Framework的高性能分布式、事件驱动、异步非阻塞php实现的socket网络服务开发框架。 具备可扩展的网络协议支持架构，可以开发任何TCP/UDP层上的网络应用。可用于物联网、网络游戏、WEB、WebSocket、服务器推送、分布式网络应用服务等领域。

PHP被广泛用于web开发领域，但在socket服务方式较少使用，导致形成了一种错误的观点：PHP只能用于网站。

事实上，PHP通过模块方式可以扩展自身功能，内置的socket支持, 完全可以实现一个socket服务器。

借助Libui扩展，也可以实现桌面软件界面的开发。

beyod, 是beyond的缩写，意思是另一个，另一边的的意思，所以beyod的目的也是寻求php在另外一个领域的(socket服务器)实践。

==beyod本质是以PHP命令行方式运行实现完整的socket服务器，所以它无须nginx/Apache/php-fpm环境，就可以独立运行。==

beyod吸收并借鉴了Nginx/ReactPHP/Workerman/Swoole/Yii/等流行的技术方案，从而实现快速开发网络应用服务。

特性：

1. 事件驱动、异步非阻塞、多进程单线程架构（Nginx/node.js相同的进程架构）。
2. 纯PHP代码实现，所有代码开源，开发参考易于上手。
3. 高性能，PHP命令行长驻内存方式运行, 省去了传统的基于请求的资源分配和释放。另外得益于基于libevent非阻塞网络模型，不必为每个连接分配线程或进程。
4. 支持大量并发连接，理论上，只要内存足够大，连接数是无上限的。测试中，单机10万tcp连接时，消耗内存仅2.4GB。
5. 稳定可靠，可长时间运行, 工作进程崩溃自动恢复。

使用Master-worker方式的多进程、单线程模型。实现了工作进程异常崩溃后的自动重启, 我们熟知的Nginx也使用了Master-worker进程模型，从而实现进程高可用性。

1. 丰富的网络协议支持

支持TCP、UDP、Unix、SSL, 内置HTTP/WebSocket/Async Redis/Async TCP Client, 并支持自定义数据包解析，从而实现任何应用层协议。

1. SSL/reuse_port/cluster dispatcher/工作进程平滑重启等特性， 单个进程中可实现多端口监听、多个协议支持。
2. 毫秒级定时器。
3. 基于Yii2 Console框架开发，Yii2是一个事件驱动高性能主流PHP框架，内置完整的PHP命令行运行支持，内置功能模块丰富，组件化架构使整个系统易于扩展。
4. 丰富的数据库支持和组件化扩展。

得益于yii框架的底层支持，支持大量的业务层功能需求，熟悉Yii web框架者可以直接上手实现业务层功能。
beyod不仅是一个网络底层开发框架，更是一个网络应用开发框架，可快速实现业务功能。

1. 易于扩展，beyod使用composer/psr标准结构，可以很容易使用第三方PHP框架实现业务功能。