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

2024-04-10

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

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

谢谢 瑞木


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/;速度太快了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我们有 php 应用程序服务器(不是 Web 服务器)吗? 的相关文章

  • 如何在 Laravel 模型中将 String 转换为 int

    这是我的解决方案 我在模型类中写了这个 评分是字符串类型 code int ratings 但我需要在从数据库检索 ratings 时更改它 我该怎么做 我们有一个模型的属性称为cast您可以在其中指定列名称 如下所示 The attrib
  • PHP HSV 到 RGB 公式理解

    我可以转换RGB价值观HSV使用以下代码 r r 255 g g 255 b b 255 h 0 s 0 v 0 min min min r g b max max max r g b r max min v max if r 0 h 0
  • 无法连接到 SMTP 服务器

    我有一个支持邮件的服务器 比如说example com 我配置了服务器并通过cpanel添加了MX记录 这样我就可以通过outlook com有地址 email protected cdn cgi l email protection MX
  • 我应该存储密码的哈希值吗?

    用户系统和密码 我正在查看 MD5 内容 我想知道密码的正常 良好做法是什么 现在 我认为人们对密码进行超级加密并存储哈希值 如果是这样 密码检查如何工作 我只是让输入的密码再次经过加密过程 然后用存储的哈希值检查哈希值 对吗 这个问题可能
  • Symfony2 捕获会话超时

    我有一个关于 Symfony2 的问题 希望有人能帮助我 Symfony 在哪里检查用户会话以及没有会话时该怎么办 就像重定向到登录页面一样 我发现了一些类似的问题 但不是我的意思 我为什么想知道它 如果有会话超时 我想检查调用是否是 Xm
  • OpenSSL 真的需要 openssl.conf 的路径吗?

    我想在 PHP 5 x 中创建自签名证书 使用我自己的 替代 openssl 配置 该配置应该由我的 PHP 代码定义 PHP 脚本将在不同的环境 共享托管网络服务器 上运行 官方PHP手册 http php net manual en f
  • json_encode 返回 200 且未定义

    我想要一个代码来添加或删除数据库书签 代码已准备就绪 它可以正确地从数据库书签中添加和删除书签 但是当我调用该函数时 它会不断返回json error反而json success即使代码有效 我想知道代码 我从其他地方获得并改编的 有什么问
  • 如何在自动完成表单的脚本中获取 json 文件的多个值

    拜托 我是 php 初学者 我想使用像这样的 json 编码的数组 http stegonia fr autocomplete index2 php http stegonia fr autocomplete index2 php 您可以看
  • md5() 是做什么用的?

    我正在阅读本教程简单的PHP登录系统 http www phpeasystep com workshopview php id 6 最后它建议你应该使用 md5 加密您的密码 http www phpeasystep com worksho
  • 如何在 的每四个循环项之后添加

    我想在循环中的每第四个数字项之后退出循环 我想创建一个二十人的名单 在每一个tr应该是4个人 So I want to break from the loop after every 4th number of loop My one tr
  • Zoopla 沙箱出现 cURL http 标头错误

    我正在为房地产经纪人开发代码 以通过他们的数据源将房产上传到 Zoopla 我在将所需的配置文件添加到所需的 http 标头时遇到问题 文档中唯一的示例是来自 Linux 的测试 echo branch reference test cur
  • 如何使用 Codeigniter 从另一个视图中加载视图文件,而无需通过控制器?

    我正在努力寻找此问题的解决方案 我需要从另一个视图中加载视图 我知道 通常我只需要这样做 但这一次 文件路径被传递到数据文件标记的属性 我有 a href 实际上 这是由 JavaScript 函数用来自行加载视图的 因此 当这样做时 它会
  • 通过 Amazon SQS 将压缩文本从 PHP 发送到 NodeJS

    我似乎一直坚持通过 Amazon SQS 将压缩消息从 PHP 发送到 NodeJS 在 PHP 方面我有 SQS gt sendMessage Array QueueUrl gt queueUrl MessageBody gt artic
  • 在javascript中通过window.location传递数据

    我试图通过 window location 传递数据 数据在 del id img album 中可用 我想通过 window location 发送多个值 window location save php type deldownload
  • PHP 是否有可重用的路由器/调度程序?

    我正在使用一个简单的框架 它根据查询参数处理请求 http example com index php event listPage http example com index php event itemView id 1234 我想将
  • Composer 自动加载器未加载 GuzzleHttp\ClientInterface

    我正在尝试使用Guzzle http guzzle readthedocs org en latest 但我得到以下内容致命错误 致命错误 找不到类 GuzzleHttp ClientInterface var www myapp vend
  • Notepad++ 编辑 PHP 的语法突出显示吗?

    我想在 Notepad 中编辑 PHP 的语法突出显示 变量开头为 与仅开头的变量的颜色不同 让运营商像 颜色与操作员不同 是否可以将突出显示更改为如此深入 如何 这个有可能 在 Notepad 中 通过单击定义新语言View gt 用户定
  • Twitter API 响应并不总是按预期返回实体媒体

    考虑使用以下命令检索 Twitter 用户的收藏夹列表 abraham twitteroauth PHP 库 https github com abraham twitteroauth https api twitter com 1 1 f
  • 56 CONNECT 后收到来自代理的 HTTP 代码 403?

    使用 cUrl 从我的网页生成销售人员线索时 出现 56 在 CONNECT 后从代理接收到 HTTP 代码 403 错误 该网站的 SSL 证书已过期 UPDATED 我的代码如下 curl setopt curl CURLOPT URL
  • 展平数组:保持索引、值等于数组中的位置

    我在尝试以特定方式展平数组时遇到了一些麻烦 这里有一个print r我想要展平的数组的视图 Array 1 gt Array 8 gt 1 9 gt 2 10 gt Array 15 gt Array 22 gt 1

随机推荐