FrankenPHP upgrade + Ember live demo (IPC talk)#12
Merged
Conversation
Headline changes for the conference demo: - Pin FrankenPHP 1.12.4 / PHP 8.4. PHP 8.5's thread-safe (ZTS) build deadlocks FrankenPHP's worker threads under load, so we stay on 8.4. - Switch the DB from SQLite to MySQL (+ pdo_mysql in the FrankenPHP image). - Run the app in APP_ENV=prod. In dev mode FrankenPHP's threads deadlock fighting over the Symfony cache-rebuild lock; prod compiles once and is rock-solid (1k+ req/s on classic, zero failures). Ember demo: - New Ember.md beginner walkthrough with step-by-step screenshots. - make ember-install (auto-detects macOS / Linux / Windows). - make ember / make ember-load (single-server wave, classic by default). - make compare / make compare-load (FPM vs classic vs worker, side by side). - bin/scope: the 3-runtime side-by-side TUI. - k6/ember_ramp.js: spiky up/down traffic wave. - Caddy access logging enabled in both Caddyfiles. Housekeeping: - README cleanup (+ remove README.back*.md backups). - Green the unit test suite: fix doctrine-fixtures 2.x getReference() calls, make PHPUnit 11 data providers static, exclude legacy symfony/demo functional tests.
f701668 to
53a09ea
Compare
…ers via compose Rename Ember.md -> ember.md. The demo runtimes (app/franken/franken-worker) get APP_ENV=prod + MySQL through docker-compose; .env stays local/SQLite so the lint/test tooling behaves as on main.
bin/open-url.sh detects WSL ($WSL_DISTRO_NAME / /proc/version) and hands the URL to the Windows browser via wslview/explorer.exe/cmd.exe; uses 'open' on macOS, 'xdg-open' on Linux, 'start' on Git Bash. Falls back to printing a Ctrl+click URL. 'make urls' lists every demo URL. Per Paul's request for WSL browser-open support.
- Swap ember-04-threads.png for the 12-thread classic view - Step 3 text now says classic/12 threads (matches the 'make ember' default); worker/20 threads is the alternative - README: PHP 8.4, not 8.5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this is
Prep for the IPC Conference Germany FrankenPHP talk: upgrade the stack and add a one-command Ember live demo (the FrankenPHP terminal dashboard from alexandre-daubois/ember).
Highlights
Stack
pdo_mysqlin the FrankenPHP image).APP_ENV=prod— the key fix. In dev mode FrankenPHP's threads deadlock fighting over the Symfony cache-rebuild lock; prod compiles once and holds 1k+ req/s on classic with zero failures.Ember demo
make ember-install— auto-detects macOS / Linux / Windows.make ember+make ember-load— single-server wave (classic by default, no flags).make compare+make compare-load— FPM vs classic vs worker, side by side (bin/scope).k6/ember_ramp.js— spiky up/down traffic wave.Ember.md— beginner walkthrough with step-by-step screenshots (docs/images/ember-*).Housekeeping
README.back*.md).doctrine-fixtures2.xgetReference()fix, static PHPUnit 11 data providers, excluded legacy symfony/demo functional tests.Try it