With PHP-PM https://github.com/php-pm/php-pm, 走鹃 https://roadrunner.dev/, Swoole https://www.php.net/manual/en/book.swoole.php“应用程序服务器”标签是有争议的,但它们都解决了最有问题的部分:浪费的“在每个请求上处理应用程序重新初始化和清理”。并且,除了删除整个HTTP 服务器 → 辅助。流程管理→ PHP 脚本加载/处理绕过管道(通过集成、进行中HTTP 服务器 + 进程管理设施),它们还添加了不同级别/数量的额外服务,以帮助在 PHP 中构建强大的、长期存在的服务器端应用程序。
Swoole从技术上讲是作为 PHP 扩展实现的,但是做了更多的事情 https://scottaubrey.info/blog/2018-10-22-first-look-at-swoole/比平常的。它自行启动工作进程,并且像框架一样使用:您将编写事件循环并将控制权传递给 Swoole。您的应用程序将连接到处理 HTTP 请求(或 websocket 事件等),使用其非阻塞异步 I/O(网络、文件系统、进程管理)以及各种其他方便的服务,包括。协程、IPC、锁定等)。所有异步、性能关键的 I/O 均通过简单的 PHP API 用 C 语言处理,包括:
- HTTP 服务器和客户端
- TCP/UDP 服务器和客户端
- Websocket服务器
- Redis服务器
- MySQL客户端
- 文件系统 I/O、IPC、进程管理。 ETC。
https://scottaubrey.info/blog/2018-10-22-first-look-at-swoole/ https://scottaubrey.info/blog/2018-10-22-first-look-at-swoole/
它基本上是 PHP 的 Node.js https://tsh.io/blog/swoole-is-it-node-in-php-or-am-i-wrong/
→ 非官方额外文档 https://www.swoole.co.uk/(此外官方的 http://docs.php.net/manual/en/book.swoole.php)
走鹃是一个流程管理服务器(用 Go 编写)。来自他们的功能列表 https://github.com/spiral/roadrunner:
- PSR-7 HTTP 服务器(文件上传、错误处理、静态文件、热重载、中间件、事件监听器)
- HTTPS 和 HTTP/2 支持(包括 HTTP/2 Push、H2C)
- 完全可定制的服务器,FastCGI 支持
- 负载均衡器、流程管理器和任务管道
- 通过 TCP、UNIX 套接字和标准管道工作
- 自动替换worker并安全销毁PHP进程
- 工作人员生命周期管理(控制器)
- 非常快(在 Ryzen 1700X 上使用 16 个线程每秒约 250k rpc 调用)
- 与 Symfony、Laravel、Slim、CakePHP、Zend Expressive 集成
- 文件更改时自动重新加载
- 适用于 Windows(Windows 10 支持 Unix 套接字 (AF_UNIX))
PHP-PM是另一个高级 PHP 流程管理器(如 RoadRunner),但还附带一个应用程序(元)框架,构建在ReactPHP https://reactphp.org/(另一个事件驱动的,async.I/O lib,类似于Swoole,但用PHP实现,所以本质上较慢)。这个包涵盖了应用程序服务器杂务的大部分内容(https://laravel-news.com/php-pm https://laravel-news.com/php-pm)。他们列出的一些features https://github.com/php-pm/php-pm:
- 集成负载平衡器。
- 热代码重新加载(当 PHP 文件更改时)。
- 静态文件服务可简化开发过程。
- 支持 HttpKernel (Symfony/Laravel)、Drupal(实验性)、Zend(实验性)。
Bonus: 这是一个很好、详细的性能测试 https://sudonull.com/post/7528-Compare-PHP-FPM-PHP-PPM-Nginx-Unit-React-PHP-and-RoadRunner用于长期存在的服务器端 PHP 进程的各种架构替代方案(不包括 Swoole)。对于Swoole(与其他框架相比,不是其他PHP流程管道设置!),请参阅这个不错的框架性能图表 https://www.techempower.com/benchmarks/;速度太快了。