Skip to content

Commit f2e9217

Browse files
Pierre Clavequindunglas
authored andcommitted
docs: update Chinese documentation to latest version
1 parent 1f6d6bd commit f2e9217

File tree

17 files changed

+1688
-164
lines changed

17 files changed

+1688
-164
lines changed

docs/cn/CONTRIBUTING.md

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ go test -tags watcher -race -v ./...
4242

4343
```console
4444
cd caddy/frankenphp/
45-
go build
45+
go build -tags watcher,brotli,nobadger,nomysql,nopgx
4646
cd ../../
4747
```
4848

@@ -53,10 +53,13 @@ cd testdata/
5353
../caddy/frankenphp/frankenphp run
5454
```
5555

56-
服务器正在监听 `127.0.0.1:8080`
56+
服务器正在监听 `127.0.0.1:80`
57+
58+
> [!NOTE]
59+
> 如果您正在使用 Docker,您必须绑定容器的 80 端口或者在容器内部执行命令。
5760
5861
```console
59-
curl -vk https://localhost/phpinfo.php
62+
curl -vk http://127.0.0.1/phpinfo.php
6063
```
6164

6265
## 最小测试服务器
@@ -149,18 +152,15 @@ docker buildx bake -f docker-bake.hcl --pull --no-cache --push
149152

150153
3. 启用 `tmate` 以连接到容器
151154

152-
```patch
153-
-
154-
name: Set CGO flags
155-
run: echo "CGO_CFLAGS=$(php-config --includes)" >> "$GITHUB_ENV"
156-
+ -
157-
+ run: |
158-
+ sudo apt install gdb
159-
+ mkdir -p /home/runner/.config/gdb/
160-
+ printf "set auto-load safe-path /\nhandle SIG34 nostop noprint pass" > /home/runner/.config/gdb/gdbinit
161-
+ -
162-
+ uses: mxschmitt/action-tmate@v3
163-
```
155+
```patch
156+
- name: Set CGO flags
157+
run: echo "CGO_CFLAGS=$(php-config --includes)" >> "$GITHUB_ENV"
158+
+ - run: |
159+
+ sudo apt install gdb
160+
+ mkdir -p /home/runner/.config/gdb/
161+
+ printf "set auto-load safe-path /\nhandle SIG34 nostop noprint pass" > /home/runner/.config/gdb/gdbinit
162+
+ - uses: mxschmitt/action-tmate@v3
163+
```
164164

165165
4. 连接到容器
166166
5. 打开 `frankenphp.go`
@@ -190,7 +190,6 @@ docker buildx bake -f docker-bake.hcl --pull --no-cache --push
190190
- [PHP 嵌入 C++](https://gist.github.com/paresy/3cbd4c6a469511ac7479aa0e7c42fea7)
191191
- [扩展和嵌入 PHP 作者:Sara Golemon](https://books.google.fr/books?id=zMbGvK17_tYC&pg=PA254&lpg=PA254#v=onepage&q&f=false)
192192
- [TSRMLS_CC到底是什么?](http://blog.golemon.com/2006/06/what-heck-is-tsrmlscc-anyway.html)
193-
- [Mac 上的 PHP 嵌入](https://gist.github.com/jonnywang/61427ffc0e8dde74fff40f479d147db4)
194193
- [SDL 绑定](https://pkg.go.dev/github.com/veandco/go-sdl2@v0.4.21/sdl#Main)
195194

196195
## Docker 相关资源

docs/cn/README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ FrankenPHP 凭借其令人惊叹的功能为你的 PHP 应用程序提供了超
88

99
FrankenPHP 可与任何 PHP 应用程序一起使用,并且由于提供了与 worker 模式的集成,使你的 Symfony 和 Laravel 项目比以往任何时候都更快。
1010

11-
FrankenPHP 也可以用作独立的 Go 库,将 PHP 嵌入到任何使用 net/http 的应用程序中。
11+
FrankenPHP 也可以用作独立的 Go 库,将 PHP 嵌入到任何使用 `net/http` 的应用程序中。
1212

1313
[**了解更多** _frankenphp.dev_](https://frankenphp.dev/cn/) 以及查看此演示文稿:
1414

@@ -56,7 +56,7 @@ docker run -v .:/app/public \
5656
> [!TIP]
5757
>
5858
> 不要尝试使用 `https://127.0.0.1`。使用 `https://localhost` 并接受自签名证书。
59-
> 使用 [`SERVER_NAME` 环境变量](config.md#环境变量) 更改要使用的域。
59+
> 使用 [`SERVER_NAME` 环境变量](config.md#environment-variables) 更改要使用的域。
6060
6161
### Homebrew
6262

@@ -76,12 +76,16 @@ frankenphp php-server
7676

7777
## 文档
7878

79+
- [Classic 模式](classic.md)
7980
- [worker 模式](worker.md)
8081
- [早期提示支持(103 HTTP status code)](early-hints.md)
8182
- [实时功能](mercure.md)
83+
- [高效地服务大型静态文件](x-sendfile.md)
8284
- [配置](config.md)
85+
- [用 Go 编写 PHP 扩展](extensions.md)
8386
- [Docker 镜像](docker.md)
8487
- [在生产环境中部署](production.md)
88+
- [性能优化](performance.md)
8589
- [创建独立、可自行执行的 PHP 应用程序](embed.md)
8690
- [创建静态二进制文件](static.md)
8791
- [从源代码编译](compile.md)

docs/cn/classic.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# 使用经典模式
2+
3+
在没有任何额外配置的情况下,FrankenPHP 以经典模式运行。在此模式下,FrankenPHP 的功能类似于传统的 PHP 服务器,直接提供 PHP 文件服务。这使其成为 PHP-FPM 或 Apache with mod_php 的无缝替代品。
4+
5+
与 Caddy 类似,FrankenPHP 接受无限数量的连接,并使用[固定数量的线程](config.md#caddyfile-配置)来为它们提供服务。接受和排队的连接数量仅受可用系统资源的限制。
6+
PHP 线程池使用在启动时初始化的固定数量的线程运行,类似于 PHP-FPM 的静态模式。也可以让线程在[运行时自动扩展](performance.md#max_threads),类似于 PHP-FPM 的动态模式。
7+
8+
排队的连接将无限期等待,直到有 PHP 线程可以为它们提供服务。为了避免这种情况,你可以在 FrankenPHP 的全局配置中使用 max_wait_time [配置](config.md#caddyfile-配置)来限制请求可以等待空闲的 PHP 线程的时间,超时后将被拒绝。
9+
此外,你还可以在 Caddy 中设置合理的[写超时](https://caddyserver.com/docs/caddyfile/options#timeouts)
10+
11+
每个 Caddy 实例只会启动一个 FrankenPHP 线程池,该线程池将在所有 `php_server` 块之间共享。

docs/cn/compile.md

Lines changed: 52 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,34 @@
99

1010
FrankenPHP 支持 PHP 8.2 及更高版本。
1111

12+
### 使用 Homebrew (Linux 和 Mac)
13+
14+
安装与 FrankenPHP 兼容的 libphp 版本的最简单方法是使用 [Homebrew PHP](https://github.com/shivammathur/homebrew-php) 提供的 ZTS 包。
15+
16+
首先,如果尚未安装,请安装 [Homebrew](https://brew.sh)
17+
18+
然后,安装 PHP 的 ZTS 变体、Brotli(可选,用于压缩支持)和 watcher(可选,用于文件更改检测):
19+
20+
```console
21+
brew install shivammathur/php/php-zts brotli watcher
22+
brew link --overwrite --force shivammathur/php/php-zts
23+
```
24+
25+
### 通过编译 PHP
26+
27+
或者,你可以按照以下步骤,使用 FrankenPHP 所需的选项从源代码编译 PHP。
28+
1229
首先,[获取 PHP 源代码](https://www.php.net/downloads.php) 并提取它们:
1330

1431
```console
1532
tar xf php-*
1633
cd php-*/
1734
```
1835

19-
然后,为你的平台配置 PHP.
20-
21-
这些参数是必需的,但你也可以添加其他编译参数(例如额外的扩展)。
36+
然后,运行适用于你平台的 `configure` 脚本。
37+
以下 `./configure` 标志是必需的,但你可以添加其他标志,例如编译扩展或附加功能。
2238

23-
### Linux
39+
#### Linux
2440

2541
```console
2642
./configure \
@@ -30,29 +46,26 @@ cd php-*/
3046
--enable-zend-max-execution-timers
3147
```
3248

33-
### Mac
49+
#### Mac
3450

35-
使用 [Homebrew](https://brew.sh/) 包管理器安装 `libiconv``bison``re2c``pkg-config`
51+
使用 [Homebrew](https://brew.sh/) 包管理器安装所需的和可选的依赖项
3652

3753
```console
38-
brew install libiconv bison re2c pkg-config
54+
brew install libiconv bison brotli re2c pkg-config watcher
3955
echo 'export PATH="/opt/homebrew/opt/bison/bin:$PATH"' >> ~/.zshrc
4056
```
4157

4258
然后运行 `./configure` 脚本:
4359

4460
```console
4561
./configure \
46-
--enable-embed=static \
62+
--enable-embed \
4763
--enable-zts \
4864
--disable-zend-signals \
49-
--disable-opcache-jit \
50-
--enable-static \
51-
--enable-shared=no \
5265
--with-iconv=/opt/homebrew/opt/libiconv/
5366
```
5467

55-
## 编译并安装 PHP
68+
#### 编译 PHP
5669

5770
最后,编译并安装 PHP:
5871

@@ -61,30 +74,36 @@ make -j"$(getconf _NPROCESSORS_ONLN)"
6174
sudo make install
6275
```
6376

64-
## 编译 Go 应用
77+
## 安装可选依赖项
6578

66-
你现在可以使用 Go 库并编译我们的 Caddy 构建:
79+
某些 FrankenPHP 功能依赖于必须安装的可选系统依赖项。
80+
或者,可以通过向 Go 编译器传递构建标签来禁用这些功能。
6781

68-
```console
69-
curl -L https://github.com/php/frankenphp/archive/refs/heads/main.tar.gz | tar xz
70-
cd frankenphp-main/caddy/frankenphp
71-
CGO_CFLAGS=$(php-config --includes) CGO_LDFLAGS="$(php-config --ldflags) $(php-config --libs)" go build
72-
```
82+
| 功能 | 依赖项 | 用于禁用的构建标签 |
83+
|--------------------------|------------------------------------------------------------------------|-------------------|
84+
| Brotli 压缩 | [Brotli](https://github.com/google/brotli) | nobrotli |
85+
| 文件更改时重启 worker | [Watcher C](https://github.com/e-dant/watcher/tree/release/watcher-c) | nowatcher |
86+
87+
## 编译 Go 应用
88+
89+
你现在可以构建最终的二进制文件。
7390

7491
### 使用 xcaddy
7592

76-
你可以使用 [xcaddy](https://github.com/caddyserver/xcaddy) 来编译 [自定义 Caddy 模块](https://caddyserver.com/docs/modules/) 的 FrankenPHP:
93+
推荐的方法是使用 [xcaddy](https://github.com/caddyserver/xcaddy) 来编译 FrankenPHP。
94+
`xcaddy` 还允许轻松添加 [自定义 Caddy 模块](https://caddyserver.com/docs/modules/) 和 FrankenPHP 扩展:
7795

7896
```console
7997
CGO_ENABLED=1 \
80-
XCADDY_GO_BUILD_FLAGS="-ldflags '-w -s'" \
98+
XCADDY_GO_BUILD_FLAGS="-ldflags='-w -s' -tags=nobadger,nomysql,nopgx" \
99+
CGO_CFLAGS=$(php-config --includes) \
100+
CGO_LDFLAGS="$(php-config --ldflags) $(php-config --libs)" \
81101
xcaddy build \
82102
--output frankenphp \
83103
--with github.com/dunglas/frankenphp/caddy \
84-
--with github.com/dunglas/caddy-cbrotli \
85104
--with github.com/dunglas/mercure/caddy \
86105
--with github.com/dunglas/vulcain/caddy
87-
# Add extra Caddy modules here
106+
# 在这里添加额外的 Caddy 模块和 FrankenPHP 扩展
88107
```
89108

90109
> [!TIP]
@@ -96,3 +115,13 @@ xcaddy build \
96115
> 请将 `XCADDY_GO_BUILD_FLAGS` 环境变量更改为如下类似的值
97116
> `XCADDY_GO_BUILD_FLAGS=$'-ldflags "-w -s -extldflags \'-Wl,-z,stack-size=0x80000\'"'`
98117
> (根据你的应用需求更改堆栈大小)。
118+
119+
### 不使用 xcaddy
120+
121+
或者,可以通过直接使用 `go` 命令来编译 FrankenPHP 而不使用 `xcaddy`
122+
123+
```console
124+
curl -L https://github.com/php/frankenphp/archive/refs/heads/main.tar.gz | tar xz
125+
cd frankenphp-main/caddy/frankenphp
126+
CGO_CFLAGS=$(php-config --includes) CGO_LDFLAGS="$(php-config --ldflags) $(php-config --libs)" go build -tags=nobadger,nomysql,nopgx
127+
```

0 commit comments

Comments
 (0)