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

AI 概述
FrankenPHP 是基于 Caddy 和 Go 构建的高性能 PHP 运行时与服务器,集成 PHP 解释器,减少进程管理开销,支持 HTTP/2、HTTP/3,提供更高吞吐量和更低延迟。它兼容主流 PHP 框架,支持 classic 和 worker 两种运行模式,尤其 worker 模式性能更优。适用于 API/微服务、传统应用加速及云原生部署。可通过二进制或 Docker 安装,支持快速启动 ThinkPHP8 等应用,内置 Caddy 服务器简化配置,适合高并发和现代化开发场景。
目录
文章目录隐藏
  1. 概述
  2. 核心特点
  3. 与 PHP-FPM 的对比
  4. 使用场景
  5. 安装
  6. 简单使用
  7. 快速启动 ThinkPHP8

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 快速入门教程的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

1

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » PHP 应用服务器 FrankenPHP 快速入门教程

发表回复