FrankenPHP: persist some core services across requests - #64104
Draft
CarlSchwan wants to merge 10 commits into
Draft
CarlSchwan wants to merge 10 commits into
CarlSchwan wants to merge 10 commits into
Conversation
CarlSchwan
requested review from
Altahrim,
leftybournes,
provokateurin and
salmart-dev
and removed request for
a team
September 7, 2026 14:31
CarlSchwan
marked this pull request as draft
September 7, 2026 14:37
come-nc
reviewed
Sep 7, 2026
Comment on lines
+560
to
+576
| $application = $this->container->get($applicationClassName); | ||
| // Always the current container: this Router instance may outlive the request that built it. | ||
| $application = \OCP\Server::get($applicationClassName); |
Contributor
There was a problem hiding this comment.
This is a bit ugly.
I think I would prefer as a first step to keep the containers across requests, but empty their stored services completely.
And then as a second step make it possible to let some classes stay in the container across requests.
This would avoid the current dance where objects get stored in a static array and then back to the container.
come-nc
reviewed
Sep 7, 2026
| } | ||
|
|
||
| localhost { | ||
| franken.local { |
Contributor
There was a problem hiding this comment.
Should not be pushed I guess
Used to mark a service as reusable between request when running franken php. Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Add SimpleContainer::resetForNextRequest(), which evicts non-persistent services instead of rebuilding the whole container every request. Also move connectDispatcher() into boot(), since IEventDispatcher isn't itself persisted. Assisted-by: ClaudeCode:claude-sonnet-5 Signed-off-by: Carl Schwan <carl@carlschwan.eu>
updateType()/updateSensitive()/updateLazy() and Installer's shipped-app install path never invalidated PersistentServiceGroup::Config. Assisted-by: ClaudeCode:claude-sonnet-5 Signed-off-by: Carl Schwan <carl@carlschwan.eu>
…dator Avoids rebuilding it on every generation check. Assisted-by: ClaudeCode:claude-sonnet-5 Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Refresh per-request state (context, IAppManager, IEventLogger) on each request. Also check isEnabledForAnyone() instead of isEnabledForUser(): $root is now shared across requests, so a per-user decision would leak into other users' requests. Assisted-by: ClaudeCode:claude-sonnet-5 Signed-off-by: Carl Schwan <carl@carlschwan.eu>
CarlSchwan
force-pushed
the
carl/PersistAcrossRequests
branch
from
September 16, 2026 15:04
dde2d1c to
ebef784
Compare
…ted container Makes its dependency explicit and testable. Signed-off-by: Carl Schwan <carl@carlschwan.eu>
CarlSchwan
force-pushed
the
carl/PersistAcrossRequests
branch
from
September 16, 2026 21:00
ebef784 to
00fa6dc
Compare
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
TODO
Checklist
3. to review, feature component)stable32)AI (if applicable)