【问题标题】:Do We have any php application servers (not web servers)?我们有任何 php 应用程序服务器(不是 Web 服务器)吗?
【发布时间】:2014-04-09 02:53:35
【问题描述】:

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

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

谢谢 拉穆

【问题讨论】:

  • Quercus 还是 Zend 服务器?或者你可以看看appserver.io
  • 任何 PHP 服务网络服务器都是 PHP 应用程序服务器。你不能问“应用服务器对 PHP 有用吗”,你必须问“PHP 应用服务器对我的业务需求有用吗”。
  • @DanFromGermany 我完全同意,像 Zend PHP Server 这样的服务器有客户支持,但不针对 webapps,它们既适用于网站也适用于 webapps。
  • @micb 从另一方面来说,您可以在任何 apache/nginx/.. 上部署 webapps,无需 appserver.io 或 Zend Server,..
  • 事实上,如果架构是应用程序驱动的,那么应用程序服务器在 PHP 中也很有用,并且对所使用的 Web 服务器的依赖性最小。使用 fastcgi 和线程安全配置,PHP 应用程序服务器(暂时称其为 PHP 扩展)只能加载一次应用程序并分发缓存对象甚至数据库连接对象。如果应用程序正在运行它的所有实例,它也可能是线程。与任何语言一样,应用程序服务器在 PHP 中可能有意义,但由于 PHP 与编程范式无关,因此应该有一些共同点来使其工作。

标签: php apache nginx


【解决方案1】:

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


Swoole 在技术上是作为 PHP 扩展实现的,但 does much more 比通常的扩展。它自己启动工作进程,它就像一个框架一样使用:你将编写你的事件循环并将控制权传递给 Swoole。您的应用程序将连接到处理 HTTP 请求(或 websocket 事件等),使用它们的非阻塞异步 I/O(网络、文件系统、进程管理),以及各种其他方便的服务,包括。协程、IPC、锁定等)。所有异步的、性能关键的 I/O 都在 C 中通过简单的 PHP API 处理,包括:

  • HTTP 服务器和客户端
  • TCP/UDP 服务器和客户端
  • Websocket 服务器
  • Redis 服务器
  • MySQL 客户端
  • 文件系统 I/O、IPC、进程管理。等

https://scottaubrey.info/blog/2018-10-22-first-look-at-swoole/

It's basically Node.js for PHP

Unofficial extra docs(除了the official ones


RoadRunner 是一个流程管理器服务器(用 Go 编写)。来自他们的feature list

  • PSR-7 HTTP 服务器(文件上传、错误处理、静态文件、热重载、中间件、事件监听器)
  • HTTPS 和 HTTP/2 支持(包括 HTTP/2 Push、H2C)
  • 完全可定制的服务器,FastCGI 支持
  • 负载平衡器、进程管理器和任务管道
  • 适用于 TCP、UNIX 套接字和标准管道
  • 自动替换工作器和安全的 PHP 进程销毁
  • 工作器生命周期管理(控制器)
  • 非常快(在使用 16 个线程的 Ryzen 1700X 上每秒约 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)。他们列出的一些features

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

奖励:here's a nice, detailed performance test 用于长期服务器端 PHP 进程的各种架构替代方案(不包括 Swoole)。对于 Swoole(与其他框架相比,而不是其他 PHP 进程管道设置!),请参阅this nice framework performance chart;速度太快了。

【讨论】:

    猜你喜欢
    • 2013-09-01
    • 1970-01-01
    • 2012-10-03
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 2019-01-28
    • 1970-01-01
    相关资源
    最近更新 更多