PHP 应用服务器 FrankenPHP 快速入门教程

概述
FrankenPHP 是一个新兴的、高性能的 PHP 应用运行时和服务器,为现代 PHP 应用提供更快的执行速度和更低的资源消耗。
FrankenPHP 是在 Caddy Web 服务器的基础上创建出来的一个专门为 PHP 打造的现代 Web 服务器,可以理解为FrankenPHP = PHP 解释器 + Caddy。
核心特点
- 基于 Caddy 和 Go:利用 Caddy 服务器的模块化架构和 Go 语言的高并发能力,提供稳定的 HTTP/2 和 HTTP/3 支持。
- 集成 PHP 运行时:直接嵌入 PHP 解释器,减少传统 PHP-FPM 的进程管理开销。
- 高性能:通过预加载、OPcache 优化和更少的上下文切换,显著提升请求处理速度。
- 开发者友好:兼容现有 PHP 应用(如 ThinkPHP、Laravel、Symfony 等),支持 classic(与 fpm 相似)和 worker(常驻内存)两种运行方式,无需或者少量修改代码即可迁移。例如可以使用 frankenphp 来运行禅道项目管理软件。
官方称 workder 运行方式要明显快速于 classic 运行方式。
与 PHP-FPM 的对比
| 特性 | FrankenPHP | PHP-FPM |
|---|---|---|
| 架构 | 嵌入式 PHP + Go 协程 | 独立的 FastCGI 进程管理器 |
| 性能 | 更高吞吐量,更低延迟 | 依赖进程池配置 |
| 协议支持 | HTTP/1.1, HTTP/2, HTTP/3 | 通常仅 HTTP/1.1 |
| 部署复杂度 | 单二进制,简化部署 | 需配置 Nginx/Apache |
使用场景
- API/微服务:高并发场景下响应更快。
- 传统应用加速:提升 WordPress、Shopify 等应用的性能。
- Serverless/边缘计算:轻量级设计适合云原生部署。
安装
从官网下载二进制或 Docker 镜像。
二进制安装:
curl https://frankenphp.dev/install.sh | sh mv frankenphp /usr/local/bin/
在 php 代码目录下可以直接运行frankenphp php-server就可以立即启动服务,而使用frankenphp php-cli /path/to/your/script.php可以直接执行 php 文件
这里使用 Docker 镜像
简单使用
新建文件index.php
<?php echo 'FrankenPHP 码云笔记!';
启动容器
docker run -v .:/app/public -p 80:80 -p 4433:443 dunglas/frankenphp
请求访问https://localhost:4433/
输出:FrankenPHP 码云笔记!
快速启动 ThinkPHP8
安装 ThinkPHP8
composer create-project topthink/think ThinkPHP8
这里的ThinkPHP8目录名你可以任意更改,这个目录就是我们后面会经常提到的应用根目录。
编写控制器Index:
<?php
namespace app\controller;
use app\BaseController;
class Index extends BaseController
{
publicfunction index()
{
return'Hi ThinkPHP8';
}
publicfunction test()
{
return'test';
}
publicfunction hello($name = 'ThinkPHP8')
{
return'hello,' . $name;
}
}
配置 Caddy 服务器
进入ThinkPHP8目录新建Caddyfile文件,定义路由和 PHP 脚本路径。
下面是一个基本的Caddyfile配置
:80 {
# 网站根目录(对应容器内的 /app/public)
root * /app/public
# 启用响应压缩(提升传输速度)
encode zstd br gzip
# PHP 服务配置(FrankenPHP 内置指令,替代传统 php_fastcgi)
php_server {
# 传递 PATH_INFO 环境变量(适配 PHP 框架路由)
env PATH_INFO {http.matchers.file.remainder}
# URL 重写规则(隐藏 index.php 入口)
try_files {path} index.php/{path}
}
# 日志配置
log {
# 日志输出到文件
output file /app/runtime/log/caddy.log
# 日志级别(调试模式)
level DEBUG
}
}
启动容器
docker run -v .:/app -v ./Caddyfile:/etc/frankenphp/Caddyfile -p 80:80 dunglas/frankenphp
FrankenPHP 内置的 Caddy 服务器默认以 /app/public 为根目录.
日志输出/app/runtime/log/caddy.log 会对应 ThinkPHP8 的runtime/log目录
请求访问
访问http://127.0.0.1,输出Hi ThinkPHP8
访问特定路由http://127.0.0.1/index/hello?name=mybj,输出:hello,world
以上关于PHP 应用服务器 FrankenPHP 快速入门教程的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » PHP 应用服务器 FrankenPHP 快速入门教程

微信
支付宝