MVP 1 0 PR READY
vhttpd MVP 1.0 PR Ready Checklist
Scope
This checklist is for final MVP 1.0 release readiness of vhttpd.
1. Build
make -C https://github.com/bullsoft/vphpext/tree/main/vhttpd vhttpd
Expected:
- binary exists at
/vphp/vhttpd-docs/vhttpd ./vhttpd --helpprints usage and exits
2. Config startup (TOML)
/vphp/vhttpd-docs/vhttpd \
--config /vphp/vhttpd-docs/examples/config/laravel.toml
Expected:
- data plane reachable (
/laravel/meta) - admin plane reachable (
/admin/workers,/admin/stats)
3. Data/Admin split
When admin is enabled on dedicated port:
- data plane
/admin/*should return 404 - admin plane should return 200 with valid token (if configured)
Verify:
curl --noproxy '*' -i http://127.0.0.1:19886/admin/workers
curl --noproxy '*' -i -H 'x-vhttpd-admin-token: <token>' http://127.0.0.1:19986/admin/workers
4. Worker counters
Drive requests then check runtime counters:
seq 50 | xargs -I{} -P4 curl --noproxy '*' -s -o /dev/null \
'http://127.0.0.1:19886/laravel/hello/guweigang'
curl --noproxy '*' -s http://127.0.0.1:19986/admin/workers | jq .workers
Expected:
- at least one worker has
served_requests > 0 - no worker stuck with high
inflight_requests
5. Restart APIs
curl --noproxy '*' -s -X POST \
'http://127.0.0.1:19986/admin/workers/restart?id=1' | jq .
curl --noproxy '*' -s -X POST \
'http://127.0.0.1:19986/admin/workers/restart/all' | jq .
Expected:
- both return
ok: true - workers come back alive
6. Graceful stop
Stop vhttpd via Ctrl+C, then verify worker cleanup.
pgrep -fal 'php-worker|vhttpd'
Expected:
- no orphan
php/package/bin/php-workerprocess remains
7. Benchmark smoke
bash /vphp/vhttpd-docs/bench/run_host_regression.sh
Expected:
- short request benchmark passes thresholds
- stream benchmark passes thresholds
8. CI binary workflow
Workflow file:
.github/workflows/vhttpd-binaries.yml
Expected:
linux-amd64,macos-amd64,macos-arm64artifacts produced- tag builds publish release assets with
SHA256SUMS.txt
9. Known non-goals (MVP)
- no built-in DB gateway server in
vhttpdyet (only PHP client API prototype exists) - no dynamic scale in/out orchestration (external process manager responsibility)