kraken-php/framework

PHP 首个且唯一的支持多进程、多线程、容错性框架。


README

Build Status Latest Stable Version Latest Unstable Version License Gitter @kraken_php on Twitter

注意: 此存储库包含 Kraken 框架的核心。如果您想使用 Kraken 开发新的应用程序,请查看 Kraken 应用程序骨架。如果您想了解更多,请访问 官方网站


描述

Kraken 是 PHP 首个且唯一的多进程、多线程、容错性框架。它被编写用来提供易于使用且可靠的 API,用于使用 PHP 创建分布式应用程序。Kraken 致力于解决编写此类应用程序的典型问题,并为开发者提供处理这些问题时既强大又优雅的工具。

Kraken 框架的主要焦点集中在

  • 并发:设计异步和并行的系统,
  • 分布式:将您的应用程序划分为多个容器,并在多个线程、处理器或主机上运行,
  • 容错性:编写使用远程和本地监督层次结构的自我修复系统,
  • 弹性:在不改变代码的情况下实时修改现有架构,
  • 高性能:每个容器可以处理每秒数千个连接,
  • 可扩展性:使用可用的选项轻松扩展和适应框架功能以满足您的需求。

现在开始编写那些在 PHP 中曾经被认为是不可能或难以实现的应用程序。服务器、面向服务的架构、基于代理的模型、游戏、复杂的守护进程、套接字程序、调度器等等——在 Kraken 中一切皆有可能!

特性亮点

Kraken 特性

  • 支持使用功能齐全的事件循环和多后台进行异步编程。
  • 支持事件驱动架构。
  • 易于理解和使用基于 Promise 的 API。
  • 一致的多进程和多线程。
  • 将进程和线程抽象为隔离的消息驱动容器。
  • 内置的消息路由系统和 IPC 抽象。
  • 可配置的本地和远程监督层次结构。
  • 集中部署和管理。
  • 可扩展的控制台和服务器接口。
  • 异步 TCP 和 UDP 套接字。
  • 异步流封装器。
  • 独立的 HTTP 和 WebSocket 服务器。
  • 多种 IPC 模型。
  • ReactPHP 兼容适配器。
  • ...等等。

完整的功能列表可以在 官方网站 上找到。

性能

Kraken 能够使用单个容器每秒发射数百万个事件和数千条消息和连接。它可以扩展到多个进程和线程,比传统的 PHP 方法更快,并且能够处理与 Node.js 相似数量的连接。

注意: 请记住,Kraken 项目并不仅仅关注 HTTP 性能。它提供了一套独特的异步库,可以在 PHP 中使用。该附图的主要目的是显示 PHP 有足够快的速度来与市场上领先的科技竞争。HTTP 组件被选中,因为它是在异步和同步 MVC 框架之间可以轻松比较的唯一组件。不要将其视为实际的基准。

由以下提供支持

Kraken 框架构建在名为 Dazzle 项目 的异步库之上。如果您在寻找比框架更简单的解决方案,您可以考虑使用它。


要求

  • PHP-5.6 或 PHP-7.0+,
  • UNIX 或 Windows 操作系统,
  • 基于您计划使用的组件,还有额外的约束条件。

安装和官方文档

框架的文档可以在 官方文档 页面上找到。要查看安装说明,请查看 应用骨架 或访问 安装指南

示例

在决定使用 Kraken 之前,您可以尝试一些示例。

如果您为 Kraken 编写了自己的演示应用,并希望将其列在这里,请联系我们!

常见问题解答

Kraken 与其他 PHP 异步库有何不同?

与现有的 PHP 异步库相比,Kraken 不仅为开发者提供了异步工具,还完成了创建分布式应用的大部分繁琐工作。它为处理进程和线程提供了统一的接口,实现了容错机制,允许使用远程和本地监督层次结构,提供了 IPC 抽象,并实现了诸如路由、心跳等最重要的消息模式等。开发者不需要思考如何在新的项目中使用异步库以及如何使用它们来设计项目,只需启动 Kraken 实例,专注于其业务逻辑即可!

PHP GC 能否处理长期运行的应用程序?

在大多数情况下可以,但开发者仍然需要注意应用程序的内存使用情况。使用框架所需的 PHP 5.5+ 能够成功地处理适当的内存处理和垃圾回收。这已经在 Kraken 模块中得到证实,因为在开发周期中特别关注确保它们不会泄漏内存。然而,使用第三方供应商时,这不能得到保证,因为一些(例如 ORMs)已知容易发生此类问题。避免这种情况的最简单方法是简单地使用析构函数、unset 函数并创建内存分配和释放测试。如果在这样做之后您仍然遇到此问题,处理它的最佳方法是隔离泄漏的代码片段,并在达到内存限制时将其周期性地重新启动。


如果您对框架有任何其他问题,请检查这些答案是否已经发布在 问题 中,或者在我们的 gitter 房间 中提问。

贡献

感谢您考虑为 Kraken 框架做出贡献!贡献指南可以在 贡献提示 中找到。

许可证

Kraken 框架是开源软件,根据 MIT 许可证 许可。文档是在 FDL-1.3 许可证 下提供的。