编程

ReactPHP:基于事件驱动的非阻塞 I/O 框架

18 2025-07-15 04:23:00

ReactPHP 是 PHP 中用于事件驱动编程的底层库。其核心是事件循环,在其之上提供底层实用程序,例如:流抽象、异步 DNS 解析、web 客户端/服务端、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';

$http = 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');
$http->listen($socket);

echo "Server running at http://127.0.0.1:8080" . PHP_EOL;

ReactPHP 可用于生产环境,其经过了来自世界各地各种项目的数百万次安装的实战测试。

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

ReactPHP 的独特之处在于其生动的生态系统,其中有数百个第三方库,允许你与许多现有系统集成,如通用网络服务、数据库系统和其他第三方 API。

默认情况下,ReactPHP 是非阻塞的。如果要阻塞 I/O 可使用 worker 。

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

特性:

  • 生产准备就绪,经过实战检验。
  • 坚如磐石,有稳定的长期支持(LTS)版本。
  • 无需扩展,可在任何平台上运行-没有借口!
  • 利用可选扩展在可用时获得更好的性能。
  • 支持最新版本的PHP 8+和PHP 7+,以获得最佳性能和支持。
  • 仍然支持遗留的PHP 5.3+和HHVM,以获得最大的兼容性。
  • 设计良好且可重复使用的组件。
  • 解耦的组件,这样它们就可以被替代实现所取代。
  • 经过仔细测试(单元和功能)。
  • 在可能的情况下推广标准 PSR,以实现最大的互操作性。
  • 旨在保持技术中立,以便你可以使用首选的应用堆栈。
  • 小型核心专业团队,大的外部贡献者网络支持。

 

PHP