You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit e8a4391
Browse filesBrowse the repository at this point in the historyBrowse files
Everything from the FPM extraction, adapted to this repository:
- arm modes (--arm-mode, auto by origin): the classic two-surface builder
and a single-surface AMPLIFIED session_decode for stock installations -
one nginx port, one pool, memory_limit=128M, pm=dynamic, stock php.ini.
The payload multiplies decode memory ~22x per byte while
BG(unserialize).level == 1, so one POST arms the producer from an empty
session; a ladder, a growth fallback and a big-body probe adapt to body
caps (nginx needs client_max_body_size 5m; stock 1m is too small).
- --workers fans the arm/consume over a pm=dynamic pool (default 5) and
--builder-prefix /b runs both classic surfaces behind one port.
- probe: a per-target checklist of every chain precondition (version,
session_start, reflection, reference, arm physics, body budget).
- the leak reclaim buffer is TILED with the read length: any overlap of the
freed short string yields a sane oversized length, so calibration sweeps
reclaim shapes instead of one pre-placed header (which crashed workers on
uncalibrated builds). Phase 1 is round-robin with set-based stability and
bounded collection: crash-heavy shapes no longer degrade the state of the
shapes after them.
- profiles now carry per-environment geometry: the classic fields stay the
reference and fpm.growth holds the default-install calibration; the schema
(fpm-schema.json and the generic schema) accepts the new section.
- 7.4.33, 8.0.30 and 8.1.33 verified end to end over HTTP (calibrate ->
uid=1000 proof; no-oracle reproduced on each): php_session_cancel_decode
only unlinks the session file, the struct is released by the Zend MM on
every branch, so chain_applies() now covers 7.4 and all 8.x. 7.2 arms
but no reclaim shape covers its struct yet, and 5.x has no zend_reference
- both keep the session-file plant. registry docstrings corrected.
- 8.4.26 recalibrated against THIS checkout (per-environment geometry);
verification.json records the matrix verdicts and the live-fpm workflow
calibrates on the runner before testing, so CI is environment-independent.
- lab: --mode default renders the stock-installation pool; grow.php is the
amplifier/growth stand-in; up() reloads a running nginx instead of
serving a stale config; down() sweeps orphan masters.
- tests: DefaultModeTests, a poison lab test, dynamic LAB_PORTS, the 7.4+
registry reality, and geometry assertions relaxed to per-environment
invariants (the exact offsets live in the profiles).
- docs: README status/quick start/requirements/multi-worker/limitations,
docs/fpm-chain.md (versions, arm modes, tiling, laboratory, driving,
matrix, plant), docs/labs.md, the profile inventory, and new
probe-remote / remote-default / labs-fpm-up-default make targets.
| PHP 8.1.33 FPM amd64 | php-8.1.33 source tarball (nginx+FPM) |`php-8.1.33-fpm`| http (stale string) | http (stale string) |**yes**| same chain; the stale struct is reclaimed from 7.4 on |
| PHP 7.4.33 FPM amd64 | php-7.4.33 source tarball (nginx+FPM) |`php-7.4.33-fpm`| http (stale string) | http (stale string) |**yes**| same chain; `poison` also works |
47
+
| PHP 7.2.34 FPM amd64 | php-7.2.34 source tarball (nginx+FPM) |`php-7.2.34-fpm`| no | no | no | arms the stale state; reclaim shape not found - `poison` plant |
0 commit comments