你是不是曾梦想过
一个现代化的 PHP 应用服务器
能够突破传统的捆绑
赋予你的项日前所未有的性能和灵活性?
那样,
FrankenPHP 正是你梦寐以求的处理方法!
FrankenPHP 是一个基于 Caddy Web 服务器构建的现代 PHP 应用服务器,采用 Go 和 C 编写。它依赖 Go 的标志性功能:goroutines。
FrankenPHP 特性包含: Early Hints(提前提示):这是 Web 平台的一个全新特性,能够经过提前 30% 的时间加载网站。FrankenPHP 是独一支持提前提示的 PHP SAPIWorker 模式:一次起步应用程序并保持其在内存中实时功能:内置的 Mercure 中心。从 PHP 应用程序发送事件到所有连接的浏览器,它们立即做为 JavaScript 事件接收负载可伸缩:与 PHP 8.2+、大都数 PHP 扩展和所有 Caddy 模块兼容易于安排:做为 Docker 镜像的云原生应用交付,兼容 Kubernetes 和所有现代云平台。亦能够将您的 PHP 应用程序打包为独立的、自执行的静态二进制文件。自动 HTTPS、HTTP/2 和 HTTP/3 支持等。
FrankenPHP 运用演示
一条命令运行所有
只需运用一条命令就可起步并运行一个生产级别的 PHP 服务器。 # Dockerdocker 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 模式下都支持。 <?php
header(Link: </style.css>; rel=preload; as=style);headers_send(103);
// your slow algorithms and SQL queries
echo <<<HTML
<!DOCTYPE html>
<title>Hello FrankenPHP</title>
<link rel="stylesheet" href="style.css">HTML;Early Hints 是一种 HTTP 状态代码 (103 Early Hints),用于在最后响应之前发送初步 HTTP 响应。
这般,服务器可在服务器忙于生成重点资源时,向浏览器发送关于网页可能运用的关键子资源(例如网页的样式表、关键 JavaScript)或源的提示。
在等待重点资源时期,浏览器能够运用这些提示来预热连接并请求子资源。亦便是说,Early Hints 经过提前执行有些工作来帮忙浏览器充分利用此类 “服务器思考时间”,从而加快网页加载速度。
Worker 模式:起步应用程序并将其驻留在内存中,FrankenPHP 将在几毫秒内处理传入的请求。
实时功能:FrankenPHP 配有内置 Mercure Hub,Mercure 准许将事件实时推送到所有连接的设备,它们将立即收到 JavaScript 事件。无需 JS 库或 SDK。
FrankenPHP 可与任何 PHP 应用协同运用,并且因为其与 Worker 模式的官方集成,使得 Laravel 和 Symfony 项目比以往任何时候都快。
FrankenPHP 还能够做为独立的 Go 库运用,经过 net/http 在任何应用程序中嵌入 PHP。
详情查看:
https://github.com/dunglas/frankenphp
|