我们有 php 应用程序服务器(不是 Web 服务器)吗?

Dar*_*amu 3 php apache nginx

对于 Java,我们有不同的应用程序服务器,例如 WebSphere 和 Web 逻辑,我的疑问是我们有 PHP 应用程序服务器吗?

到目前为止,我们正在使用 Apache 和 Nginx Web 服务器来运行 PHP Web 应用程序。应用程序服务器对 PHP 有什么用处?

谢谢瑞木

Sz.*_*Sz. 7

对于PHP-PMRoadRunnerSwoole来说,“应用程序服务器”这个标签是有争议的,但它们都解决了最有问题的部分:浪费的“在每个请求上处理应用程序重新初始化和清理”。并且,除了删除整个HTTP 服务器 → aux。流程管理 → PHP 脚本从管道加载/处理绕道(通过集成的进程内HTTP 服务器 + 进程管理工具),它们还添加不同级别/数量的额外服务,以帮助在 PHP 中构建强大的、长期存在的服务器端应用程序。


Swoole在技术上是作为 PHP 扩展实现的,但它的功能比通常的扩展要多得多。它自行启动工作进程,并且像框架一样使用:您将编写事件循环并将控制权传递给 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/

它基本上是 PHP 的 Node.js

非官方额外文档(除了官方文档之外)


RoadRunner是一个流程管理服务器(用 Go 编写)。从他们的功能列表中:

  • 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(另一个事件驱动的异步 I/O 库,类似于 Swoole,但在PHP,所以本质上较慢)。这个包涵盖了应用程序服务器的大部分工作(https://laravel-news.com/php-pm)。他们列出的一些功能

  • 集成负载平衡器。
  • 热代码重新加载(当 PHP 文件更改时)。
  • 静态文件服务可简化开发过程。
  • 支持 HttpKernel (Symfony/Laravel)、Drupal(实验性)、Zend(实验性)。

额外奖励:这里有一个针对长寿命服务器端 PHP 进程的各种架构替代方案(不包括 Swoole)的详细、详细的性能测试。对于Swoole(与其他框架相比,而不是其他PHP流程管道设置!),请参阅这个不错的框架性能图表;速度太快了。