在没有Web服务器的情况下测试PHP-FPM的实例

361 阅读1分钟

如果你想检查PHP-FPM是否正确运行,或者在不依赖Nginx或Apache等Web服务器的情况下查看它的配置,你可以按照下面的例子进行。

配置

安装fcgi 软件包,在/usr/local/etc/php-fpm.d/www.conf 文件中加入以下几行,并重新启动 PHP-FPM 服务器。

pm.status_path=/status
ping.path=/ping
ping.response=pong

测试

通讯

$ SCRIPT_NAME=/ping \
SCRIPT_FILENAME=/ping \
REQUEST_METHOD=GET \
cgi-fcgi -bind -connect localhost:9000

X-Powered-By: PHP/7.2.13
Content-type: text/plain;charset=UTF-8
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate, max-age=0

pong

简单状态

$ SCRIPT_NAME=/status \
SCRIPT_FILENAME=/status \
REQUEST_METHOD=GET \
cgi-fcgi -bind -connect localhost:9000

X-Powered-By: PHP/7.2.13
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate, max-age=0
Content-type: text/plain;charset=UTF-8

pool:                 www
process manager:      dynamic
start time:           21/May/2019:19:25:24 +0000
start since:          38
accepted conn:        5
listen queue:         0
max listen queue:     0
listen queue len:     128
idle processes:       1
active processes:     1
total processes:      2
max active processes: 1
max children reached: 0
slow requests:        0

详细状态

$ SCRIPT_NAME=/status \
SCRIPT_FILENAME=/status \
QUERY_STRING=full \
REQUEST_METHOD=GET \
cgi-fcgi -bind -connect localhost:9000

X-Powered-By: PHP/7.2.13
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate, max-age=0
Content-type: text/plain;charset=UTF-8

pool:                 www
process manager:      dynamic
start time:           23/May/2019:18:37:17 +0000
start since:          824
accepted conn:        7
listen queue:         0
max listen queue:     0
listen queue len:     128
idle processes:       1
active processes:     1
total processes:      2
max active processes: 1
max children reached: 0
slow requests:        0

************************
pid:                  6
state:                Idle
start time:           23/May/2019:18:37:17 +0000
start since:          824
requests:             3
request duration:     717
request method:       GET
request URI:          -
content length:       0
user:                 -
script:               /app/index.php
last request cpu:     0.00
last request memory:  2097152

************************
pid:                  7
state:                Running
start time:           23/May/2019:18:37:17 +0000
start since:          824
requests:             4
request duration:     155
request method:       GET
request URI:          /status?full
content length:       0
user:                 -
script:               -
last request cpu:     0.00
last request memory:  0

详细状态格式

上述输出可以通过使用QUERY_STRING="full&{format}"... 例如:QUERY_STRING="full&json"... 打印成JSON、XML和HTML格式。如果你想在浏览器中看到这些细节,你也可以在Nginx配置中创建一个location 块。

应用测试

SCRIPT_FILENAME=/app/index.php \
REQUEST_URI= \
QUERY_STRING= \
REQUEST_METHOD=GET \
cgi-fcgi -bind -connect localhost:9000

X-Powered-By: PHP/7.2.13
Cache-Control: no-cache, private
Date: Tue, 21 May 2019 19:20:58 GMT
Content-Type: application/json

"UP"

Bash脚本

#!/bin/sh
set -e

CMD="SCRIPT_FILENAME=/app/index.php REQUEST_METHOD=GET cgi-fcgi -bind -connect localhost:9000"
RESPONSE=$(eval "$CMD" | tail -1)

echo $RESPONSE # Prints UP