imi 对接 PHP RoadRunner 的一些经验心得

本文是 imi 框架(https://github.com/imiphp/imi)对接支持 RoadRunner 的经验心得分享。


RoadRunner 是一款开源(MIT 协议)高性能 PHP 应用服务器、负载均衡器和进程管理器。

它支持作为服务运行,能够在每个项目的基础上扩展功能。

RoadRunner 包括 PSR-7/PSR-17 兼容的 HTTP 和 HTTP/2 服务器,可用于取代传统的 Nginx+FPM 设置,具有更高的性能和灵活性。

RoadRunner Github:https://github.com/spiral/roadrunner

RoadRunner 官方文档:https://roadrunner.dev/docs


$_SERVER['REQUEST_URI']

RoadRunner 中的 REQUEST_URI 包含了完整的 url 及 queryString,比如:http://127.0.0.1:8080/test?id=1

而传统 php-fpm 下的的 REQUEST_URI 只有:/test?id=1

获取客户端连接信息

RoadRunner 只能通过 $_SERVER['REMOTE_ADDR'] 获取客户端 IP 地址,而无法使用 $_SERVER['REMOTE_PORT'] 获取到客户端的端口

$_POST

POST 请求时,不会自动判断请求类型为 application/x-www-form-urlencoded、multipart/form-data 时,自动赋值 $_POST,仅在 POST json 数据时才有效。这个操作,虽然比较现代化,但兼容性不是很好。


总的来说,还是建议使用 PSR-7 的 Request、Response 对象,而不要使用传统的超全局变量。

除了上面 3 个坑,目前暂未发现其它兼容性问题,RoadRunner 的兼容性还是可以的。


  • 标签
  • 相关文章
  • 发表评论
当前用户:
  • 评论列表
  • 最新文章
  • 最新评论