ReactPHP 是一个用于 PHP 事件驱动编程的低级库。其核心是一个事件循环,在其之上提供低级实用程序,例如:流抽象、异步 DNS 解析器、网络客户端/服务器、HTTP 客户端/服务器以及与进程的交互。第三方库可以使用这些组件来创建异步网络客户端/服务器等。
<?php
// $ composer require react/http react/socket # install example using Composer
// $ php example.php # run example on command line, requires no additional web server
require __DIR__ . ' /vendor/autoload.php ' ;
$ server = new React Http HttpServer ( function ( Psr Http Message ServerRequestInterface $ request ) {
return React Http Message Response:: plaintext (
" Hello World! n"
);
});
$ socket = new React Socket SocketServer ( ' 127.0.0.1:8080 ' );
$ server -> listen ( $ socket );
echo " Server running at http://127.0.0.1:8080 " . PHP_EOL ;
这个用 ReactPHP 编写的简单 Web 服务器会响应“Hello World!”对于每个请求。
ReactPHP 已做好生产准备,并经过来自世界各地各种项目的数百万次安装的实际测试。其事件驱动架构使其非常适合处理数百或数千个并发连接、长时间运行的应用程序以及许多其他形式的具有非阻塞 I/O 操作的协作多任务处理的高效网络服务器和客户端。 ReactPHP 的特别之处在于其生动的生态系统,其中包含数百个第三方库,使您可以与许多现有系统集成,例如常见的网络服务、数据库系统和其他第三方 API。
ReactPHP 默认是非阻塞的。使用工人来阻塞 I/O。事件循环基于反应器模式(因此得名),并受到 EventMachine (Ruby)、Twisted (Python) 和 Node.js (V8) 等库的强烈启发。
您当前正在查看的这个存储库主要用作元存储库来讨论和规划@ReactPHP 的所有内容。有关每个组件、其文档和源代码的更多详细信息,请参阅下面链接的各个组件。
EventLoop ReactPHP 的核心反应器事件循环。阅读文档
Stream事件驱动的可读可写流,用于 ReactPHP 中的非阻塞 I/O。阅读文档
Promise Promise/PHP 的实现。阅读文档
异步ReactPHP 的异步实用程序和纤维。阅读文档
ReactPHP 的异步套接字、流式纯文本 TCP/IP 和安全 TLS 套接字服务器和客户端连接。阅读文档
ReactPHP 的数据报事件驱动的 UDP 客户端和服务器套接字。阅读文档
ReactPHP 的HTTP事件驱动、流式 HTTP 客户端和服务器实现。阅读文档
DNS ReactPHP 的异步 DNS 解析器。阅读文档
缓存ReactPHP 的异步缓存。阅读文档
ChildProcess用于执行子进程的库。阅读文档
PromiseTimer ReactPHP Promise 库的简单超时实现。阅读文档
PromiseStream Promise-land 和 Stream-land 之间缺失的链接,构建在 ReactPHP 之上。阅读文档
Thruway用于 Autobahn 的 PHP 客户端和路由器库以及用于实时应用程序消息传递的 WAMP(Web 应用程序消息传递协议) voryx/Thruway
PPM - PHP 进程管理器PPM 是现代 PHP 应用程序的进程管理器、增压器和负载平衡器。 php-pm/php-pm
php-ar-drone node-ar-drone 的端口,允许用户通过 PHP jolicode/php-ar-drone 控制 Parrot AR 无人机
Ratchet异步 WebSocket 服务器ratchetphp/Ratchet
PredisAsync基于 ReactPHP nrk/predis-async 构建的 Redis 异步 PHP 客户端库
线索/redis-server纯 PHP 中的 Redis 服务器实现 线索/redis-server
我们的 wiki 页面上还有更多内容 »
Sergey Zhuk涵盖 ReactPHP 的系列文章:从基础知识到真正的应用程序示例。谢尔盖朱克我
Cees-Jan Kiewiet博客系列介绍了几个 ReactPHP 组件及其工作原理。博客.wyrihaximus.net
Loïc Faugeron Super Speed Symfony - ReactPHP。 gnugat.github.io
Marc J. Schmidt将高性能带入您的 PHP 应用程序(使用 ReactPHP)。马克施密特网站
Marc Morera当 ReactPHP 遇见 Symfonymedium.com/@apisearch
Christian Lück使用 ReactPHP 突破极限
Jeremy Mikola异步 PHP 与 React
Igor Wiedler事件驱动 PHP
ReactPHP 由一组单独的组件组成。这意味着您实际上只选择您需要的组件,而不是安装“ReactPHP 框架”之类的东西。
该项目的所有稳定组件均遵循 SemVer。安装这些组件的推荐方法是通过 Composer。作曲家新手?
例如,这可能看起来像这样:
# recommended install: pick required components
composer require react/event-loop react/http
作为替代方案,我们还提供了一个元包,可以一次性安装所有稳定组件。仅建议在快速原型设计时安装此组件,因为稳定组件列表可能会随着时间的推移而发生变化。这个元包可以这样安装:
# quick protoyping only: install all stable components
composer require react/react:^1.4
有关更多详细信息,请查看 ReactPHP 的主页以获取快速入门示例和使用详细信息。
另请参阅所有 ReactPHP 组件的合并变更日志,了解有关版本升级的详细信息。
您对 ReactPHP 有疑问并需要帮助吗?别担心,我们随时为您提供帮助!
第一步,检查每个组件附带的详细文档(请参阅上面每个组件的单独文档的链接)。如果您发现文档中没有回答您的问题,那么它很可能与更多人相关。请随时将您的问题作为问题提交到相关组件中,以便其他人也可以参与。
您还可以查看我们的官方 Gitter 聊天室。大多数参与该项目的人员都可以在这个聊天室中找到答案,因此许多问题可以在几分钟到几个小时内得到解答。我们还使用此聊天室来宣布所有新版本和正在进行的开发工作,因此请考虑在此聊天室中停留更长的时间。
另请在 Twitter 上关注@reactphp 以获取更新。我们主要将其用于值得注意的、更大的更新,并让社区了解正在进行的开发工作的最新情况。如果您有任何要分享的内容,您可以随时使用#reactphp
主题标签!
我们是一个非常开放的项目,我们更喜欢尽可能进行公共沟通,以便更多的人可以参与并帮助获得最佳的解决方案。同时,我们意识到有些事情最好私下解决。无论您只是想表达感谢、报告安全问题还是想帮助赞助某个功能开发,您都可以通过发送电子邮件至[email protected]
私下联系核心团队。请记住,我们是一个由志愿者组成的小团队,我们会尽力支持任何伸出援手的人。
你想支持ReactPHP吗?惊人的!让我们首先让世界知道为什么您认为 ReactPHP 很棒,并尝试帮助其他人加入!发送推文、撰写博客文章、在本地用户组或会议上发表演讲,甚至写一本书。您可以通过多种方式提供帮助。您可以随时私下联系我们,并通过我们的支持渠道帮助其他人。谢谢你!
要运行测试套件,您首先需要克隆此存储库,然后通过 Composer 安装所有依赖项:
composer install
要运行测试套件,请转到项目根目录并运行:
vendor/bin/phpunit
该测试套件还包含许多依赖稳定互联网连接的功能集成测试。由于集成测试数量巨大,在 CI 运行期间默认会跳过这些测试。如果您也不想运行这些,可以简单地跳过它们,如下所示:
vendor/bin/phpunit --exclude-group internet
麻省理工学院,请参阅许可证。