专栏名称: 运维
关注互联网运维技术,分享知识
目录
相关文章推荐
运维  ·  再见,CDN 巨头:Akamai 宣布 ... ·  昨天  
51好读  ›  专栏  ›  运维

这款开源PHP应用服务器看着有点新潮了:采用Go编写、支持Early Hints

运维  · 公众号  · 运维  · 2024-08-15 12:28

主要观点总结

文章介绍了FrankenPHP,一个基于Caddy Web服务器构建的现代PHP应用服务器。它采用Go和C编写,具有多种特性如Early Hints、Worker模式、实时功能等,旨在提高PHP应用的性能和灵活性。文章还提供了FrankenPHP的使用演示和配置方法。

关键观点总结

关键观点1: FrankenPHP的特性和优势

包括Early Hints、Worker模式、实时功能、可伸缩性、易于部署等,旨在提高PHP应用的性能和灵活性。

关键观点2: FrankenPHP的使用演示

通过一条命令即可启动并运行生产级别的PHP服务器,还提供静态二进制文件和命令行脚本的使用方式。

关键观点3: FrankenPHP的配置

配置非常简单,只需五行配置,由Caddy提供支持。


正文

来自公众号:OSC开源社区
你是否曾梦想过
一个现代化的 PHP 应用服务器
能够突破传统的束缚
赋予你的项目前所未有的性能和灵活性?
那么,
FrankenPHP 正是你梦寐以求的解决方案!

FrankenPHP 是一个基于 Caddy Web 服务器构建的现代 PHP 应用服务器,采用 Go 和 C 编写。它依赖 Go 的标志性功能:goroutines。

FrankenPHP 特性包括:

  • Early Hints(提前提示):这是 Web 平台的一个全新特性,可以通过提前 30% 的时间加载网站。FrankenPHP 是唯一支持提前提示的 PHP SAPI
  • Worker 模式:一次启动应用程序并保持其在内存中
  • 实时功能:内置的 Mercure 中心。从 PHP 应用程序发送事件到所有连接的浏览器,它们立即作为 JavaScript 事件接收负载
  • 可伸缩:与 PHP 8.2+、大多数 PHP 扩展和所有 Caddy 模块兼容
  • 易于部署:作为 Docker 镜像的云原生应用交付,兼容 Kubernetes 和所有现代云平台。也可以将您的 PHP 应用程序打包为独立的、自执行的静态二进制文件。
  • 自动 HTTPS、HTTP/2 和 HTTP/3 支持等

FrankenPHP 使用演示

一条命令运行所有

只需使用一条命令即可启动并运行一个生产级别的 PHP 服务器。

# Docker

docker run -v $PWD:/app/public -p 443:443 \

  dunglas/frankenphp


# 静态二进制文件

./frankenphp php-server


# 命令行脚本

./frankenphp php-cli /path/to/your/script.php

配置非常简单

只需五行配置,由 Caddy 提供支持。

{

    # 启用 FrankenPHP

    frankenphp

    order php_server before file_server

}


localhost {

    # 启用压缩(可选)

    encode zstd br gzip

    # 执行当前目录中的PHP文件并提供资产

    php_server

}

FrankenPHP 亮点介绍

Early Hints:FrankenPHP 原生支持 103 Early Hints 状态码,可以将网页的加载时间缩短 30%。在普通模式和 worker 模式下都支持。


header('Link: ; rel=preload; as=style');

headers_send(103);


// your slow algorithms and SQL queries 🤪


echo <<

Hello FrankenPHP

HTML;

Early Hints 是一种 HTTP 状态代码 (103 Early Hints),用于在最终响应之前发送初步 HTTP 响应。
这样,服务器可在服务器忙于生成主要资源时,向浏览器发送关于网页可能使用的关键子资源(例如网页的样式表、关键 JavaScript)或源的提示。





请到「今天看啥」查看全文