Repository navigation
Conversation
Author
|
Follow-up from lifecycle stress testing: a client disconnect during The CLI attaches its response-close listener after awaiting the hook, so it can miss an already-emitted close and retain the returned request-scoped server. This reproduces on current CLI62.2.0 with a standalone Node-only builder, without PHP or this PR. I haven't added a speculative PHP timeout/supervisor workaround here. Normal shutdown and client disconnect after readiness passed on Windows, Linux and macOS. |
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.
Summary
Fixes #607.
Implement the BuildV3
startDevServerhook sovercel devcan serve local PHP functions without downloading or executing the Linux Lambda runtime.VERCEL_PHP_EXECUTABLE, with entrypoint routing, loopback ephemeral ports, readiness checks, bounded startup retries, and owned-process shutdown.api/*.inioverrides whenapi/php.iniexists. Document that Composer dependencies/build scripts are installed/run locally, not per request.Verification
Tested final commit
ca43e2awith Node 22 on:vercel devThe unmodified Vercel CLI 50.4.5 integration runs both
buildsandfunctionsconfigurations and checks direct/nested endpoints, rewrites/query merging, form and binary bodies, concurrent requests, static files,.env, PHP ini overrides and per-response PHP shutdown. It uses a local builder cache, isolated CLI configuration, and a loopback API trap; no deployment or real account access is required. Seetest/integration/README.md.Full Jest passes on Linux/macOS. On Windows, all eight dev-hook tests pass; three existing production/path tests still fail because of Windows bundle keys and POSIX-only expectations. Those are addressed independently in #652. This PR does not incorporate or mask those unrelated fixes.
Scope
This enables local development, not deployment emulation. Developers still need local PHP/extensions and Composer dependencies. No production deployment behavior changes are intended.