Skip to content

Fix examples/slim.php and sse-interception.php, reframe as best-effort - #6

Merged
mohaelmrabet merged 1 commit into
mainfrom
fix/examples-best-effort
Sep 4, 2026
Merged

mohaelmrabet merged 1 commit into
mainfrom
fix/examples-best-effort

Conversation

@mohaelmrabet

Copy link
Copy Markdown
Contributor

Both examples claimed to demonstrate a PHP fatal but triggered a catchable Error instead (a method call on null), which goes through the exception handler, not the shutdown handler the fatal-only mechanism actually targets.

  • slim.php: split into /crash (a normal exception, answered by Slim's own error middleware) and /fatal (a genuine, portable, reproducible fatal — memory_limit lowered then exceeded — answered by this library instead).
  • sse-interception.php: same fix, same genuine fatal trigger. Both verified in real execution (not just php -l).
  • README/composer.json: reframed the tagline as best-effort, last-resort rather than implying every fatal is caught — a SIGKILL, an OOM-killed process, or a segfault give register_shutdown_function() no chance to run at all.

…est-effort

Both examples claimed to demonstrate a PHP fatal but triggered a catchable
Error instead (a method call on null), which goes through the exception
handler, not the shutdown handler the fatal-only mechanism (and, for the
SSE example, setShutdownInterception()) actually targets.

slim.php: split into /crash (a normal exception, answered by Slim's own
error middleware) and /fatal (a genuine, portable, reproducible fatal —
memory_limit lowered then exceeded — answered by this library instead).

sse-interception.php: replaced the fake trigger with the same genuine
fatal. Both verified in real execution.

README/composer.json: reframed the tagline as 'best-effort, last-resort'
rather than implying every fatal is caught — a SIGKILL, an OOM-killed
process or a segfault give register_shutdown_function() no chance to run
at all, and the promise should not exceed what PHP's termination phase
can actually observe.
@mohaelmrabet
mohaelmrabet merged commit 9f90de9 into main Sep 4, 2026
9 checks passed
@mohaelmrabet
mohaelmrabet deleted the fix/examples-best-effort branch September 4, 2026 22:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant