我们有php应用服务器(不是web服务器)吗?

我们有php应用服务器(不是web服务器)吗?,php,apache,nginx,Php,Apache,Nginx,对于Java,我们有不同的应用服务器,如WebSphere和Web logic, 我的疑问是我们有PHP应用服务器吗 到目前为止,我们正在为PHP web应用程序使用Apache和Nginx web服务器。应用服务器如何对PHP有用 谢谢 Ramu使用“应用程序服务器”这个标签是有争议的,但它们都解决了最有问题的部分:浪费性的“处理应用程序在每次请求时重新启动和清理”。除了删除整个HTTP服务器之外→ 辅助的。过程管理。→ PHP脚本加载/处理绕道管道(通过集成的进程内HTTP服务器+进程管理设

对于Java,我们有不同的应用服务器,如WebSphere和Web logic, 我的疑问是我们有PHP应用服务器吗

到目前为止,我们正在为PHP web应用程序使用Apache和Nginx web服务器。应用服务器如何对PHP有用

谢谢 Ramu

使用“应用程序服务器”这个标签是有争议的,但它们都解决了最有问题的部分:浪费性的“处理应用程序在每次请求时重新启动和清理”。除了删除整个HTTP服务器之外→ 辅助的。过程管理。→ PHP脚本加载/处理绕道管道(通过集成的进程内HTTP服务器+进程管理设施),它们还添加了不同级别/数量的额外服务,以帮助在PHP中构建健壮的长寿命服务器端应用程序


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

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

→ (除此之外)


RoadRunner是一个process manager服务器(用Go编写)。从他们的:

  • PSR-7 HTTP服务器(文件上载、错误处理、静态文件、热重新加载、中间件、事件侦听器)
  • HTTPS和HTTP/2支持(包括HTTP/2推送、H2C)
  • 完全可定制的服务器,支持FastCGI
  • 负载平衡器、进程管理器和任务管道
  • 在TCP、UNIX套接字和标准管道上工作
  • 自动工人更换和安全PHP进程销毁
  • 工作人员生命周期管理(控制器)
  • 非常快(Ryzen 1700X上每秒约250k rpc调用,使用16个线程)
  • 与Symfony、Laravel、Slim、CakePHP、Zend Expressive的集成
  • 文件更改时自动重新加载
  • 适用于Windows(Windows 10支持Unix套接字(AF_Unix))

PHP-PM是另一个高级PHP流程管理器(如RoadRunner),但也附带了一个应用程序(元)框架,构建在(另一个事件驱动的异步.I/O库,类似于Swoole,但在PHP中实现,因此固有速度较慢)。这个包涵盖了应用服务器的大部分琐事()。其中一些公司:

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


好处:为长寿命的服务器端PHP进程提供了各种架构替代方案(不包括Swoole)。对于Swoole(与其他框架相比,不是其他PHP流程管道设置!),请参阅;快得吓人。

Quercus还是Zend服务器?或者,您也可以看看任何PHP服务Web服务器都是PHP应用程序服务器。你不能问“应用服务器对PHP有用吗”,你必须问“PHP应用服务器对我的业务需求有用吗”。@Danfrom Germany我非常同意,Zend PHP server这样的服务器有客户支持,但不是针对Web应用,它们同时针对网站和Web应用。@micb和另一方面,您可以在任何apache/nginx/上部署webapps。。如果没有appserver.io或Zend Server,……事实上,如果体系结构是应用程序驱动的,应用程序服务器在PHP中也会很有用,并且对所使用的web服务器的依赖性最小。使用fastcgi和线程安全配置,PHP应用程序服务器(现在称之为PHP扩展)只能加载一次应用程序并分发缓存对象,甚至db连接对象。如果应用程序正在运行,那么它的所有实例也可能是线程。正如在任何语言中一样,应用服务器在PHP中都是有意义的,但由于PHP是编程范式不可知的,所以应该有一些共同的理由使其工作。