PHP-FPM'nin düzgün çalışıp çalışmadığını, Nginx veya Apache gibi bir web sunucusu olmadan test etmek istiyorsanız, aşağıdaki örneği takip edebilirsiniz.


Yapılandırma


Öncelikle fcgi paketini kurun, data sonra aşağıdaki satırları /usr/local/etc/php-fpm.d/www.conf dosyasına ekledikten sonra PHP-FPM'i yeniden başlatın.


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

Testler


İletişim


$ 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

Basit durum


$ 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

Ayrıntılı durum


$ 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

Ayrıntılı durum formatları


Yukarıdaki çıktı QUERY_STRING="full&{format}" eki kullanılarak JSON, XML ve HTML şeklinde de alınabilir. Örnek: QUERY_STRING="full&json". Eğer bu çıktıyı tarayıcınızda da görmek isterseniz, Nginx'e location bloğu ekleyebilirsiniz.


Uygulama testi


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 dosyası


#!/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