v0.16.0
·
184 commits
to master
since this release
v0.16.0 - 2026-05-18
Added
- Configurable cache warmup timeout (#142, #180)
- New
cache_warmup_timeoutconfig node (minimum 1s, default 30s) - New
WORKERMAN_CACHE_WARMUP_TIMEOUTenvironment variable override - Removed hardcoded 30s constant from Runner
- New
Security (breaking change)
- RequestConverter no longer trusts
X-Forwarded-Protoheader unconditionally (#152)- HTTPS is now detected only from Workerman's actual SSL transport layer
- Users behind reverse proxies must configure Symfony's trusted proxies to restore HTTPS detection
Fixed
- Runner::run() —
mkdir()return value now checked; throwsRuntimeExceptionon failure instead of silent failure (#151) - Runner::run() — cache warmup timeout added; uses
posix_kill()instead ofexit()to avoid deadlock with extensions (e.g., grpc) (#141) - ProcessHandler/TaskHandler — dynamic method calls now validated; throws
InvalidArgumentExceptionwhen method doesn't exist instead of crashing the worker (#153) - Utils::cpuCount() — handles
nullfromshell_exec('nproc')(e.g., minimal containers); returns 1 as safe fallback (#150) - PeriodicalTrigger — removed useless
assert()calls (#178) - SchedulerWorker — exceptions in forked child processes are now logged with full diagnostic information instead of being silently swallowed (#178)
- ServerManager — replaced hardcoded
sleep(1)with a polling loop and configurable timeout for status/connections file generation (#155) - WorkermanCompilerPass — improved PHPDoc for
referenceMap()(#171)