笔记文档: Event-driven, non-blocking I/O with PHP

今天推荐的工具笔记文档: ReactPHP是一个用于PHP事件驱动编程的低级库。它的核心是一个事件循环,在此基础上提供低级实用程序,例如:流抽象、异步DNS解析器、网络客户端/服务器、HTTP客户端/服务器以及与进程的交互。第三方库可以使用这些组件来创建异步网络客户端/服务器等.

代码示例: 
$loop = React\EventLoop\Factory::create(); $server = new React\Http\Server($loop, function (Psr\Http\Message\ServerRequestInterface $request) { return new React\Http\Message\Response( 200, array( 'Content-Type' => 'text/plain' ), "Hello World!\n" ); }); $socket = new React\Socket\Server(8080, $loop); $server->listen($socket); echo "Server running at http://127.0.0.1:8080\n"; $loop->run();

这个用ReactPHP编写的简单web服务器对每个请求都响应“Hello World”.


ReactPHP是生产准备和战斗测试与数百万的安装从世界各地的各种项目。

它的事件驱动的架构使它非常适合高效的网络服务器和客户端处理数百或数千个并发连接,长时间运行的应用程序和许多其他形式的具有非阻塞I/O操作的协作多任务。

ReactPHP的特别之处在于它生动的生态系统,其中包含数百个第三方库,允许您与许多现有系统集成,例如公共网络服务,数据库系统和其他第三方api。

ReactPHP默认是非阻塞的。使用worker阻塞I/ o

事件循环基于反应器模式(因此得名),并受到EventMachine (Ruby), Twisted (Python)和Node.js (V8)等库的强烈启发。

  • 生产就绪经过实战考验。
  • 坚如磐石具有稳定的长期支持(LTS)版本。
  • 不需要扩展并且可以在任何平台上运行-没有借口! < /li >
  • 利用 可选扩展以获得更好的性能。
  • 强烈建议使用最新版本的PHP 7+以获得最佳性能和支持。
  • 支持旧版PHP 5.3+和HHVM以获得最大的兼容性。
  • < 强大的> < / >强和精心设计的 < 强>可重用组件> < /强劲。li< / >
  • 解耦的部分,以便它们可以被替代的实现取代。
  • 仔细 < 强大的> < / >强测试(单元,li功能性)。< / >
  • 促进 标准psr 尽可能实现最大的互操作性。
  • 的目标是 技术中立的,所以你可以使用你喜欢的应用程序栈。
  • 核心专业团队支持 外部贡献者的大型网络


核心组件

网络组件

核心组件

实用组件


基于ReactPHP构建

在我们的维基页面上还有更多详情 »


文章


Support

你有一个问题,需要帮助与ReactPHP?
别担心,我们是来帮你的!

作为第一步,检查每个组件附带的详细文档(请参阅上面每个组件的单独文档的链接)。如果您发现您的问题在文档中没有得到回答,那么很有可能它与更多人相关。请不要犹豫,将您的问题作为议题提交到相关组件,以便其他人也可以参与。

reactphp/reactphpon Gitter.im. 我们中的许多人都可以在这个频道上找到答案,所以很多问题在几分钟到几个小时内就能得到回答。 我们也使用这个渠道来宣布所有的新版本和正在进行的开发工作

Also follow @reactphp在推特上更新。我们主要将其用于值得注意的、更大的更新,并保持社区对正在进行的开发工作的更新。你可以用 #reactphp标签,如果你有任何分享!

我们是一个非常开放的项目,我们希望尽可能公开沟通,这样更多的人可以参与并帮助获得最佳解决方案。与此同时,我们意识到有些事情最好私下解决。

不管你只是想说 谢谢, 想要报告安全问题或想要帮助赞助某个功能开发,您可以通过发送电子邮件来私下联系核心团队 [email protected]. 请记住,我们是一个由志愿者组成的小团队,我们会尽我们所能支持任何伸出援手的人.

你想支持ReactPHP吗?太棒了!让我们从让世界知道为什么你认为ReactPHP是了不起的开始,并尝试帮助其他人加入进来!发一条推特,写一篇博客,在本地用户组或会议上做一次演讲,甚至写一本书。你可以通过很多方式提供帮助。你可以私下联系我们,通过我们的支持渠道帮助别人. 谢谢!