Support FrankenPHP
Open
Nobody has claimed this yet.
enhancement
php
- Dominant language
- PHP
- Stars
- 36.9k
- Forks
- 5.2k
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 713
Description
Current limitations
Critical - For a safe and working worker mode
- Remove static variables
- Task: Introduce official linting rules for Nextcloud
- Task: Introduce reflection at container destroy time to detect static variables in classes and fail hard on worker mode production
- Detect open DB transactions at the end of a request
- Check for open transactions. If any, error and roll it back.
- Smalls adaptation to how Frankenphp is working
Nice to have
- For a debuggable software: check how to use xdebug and blackfire with FrankenPHP
- For a working worker mode after code changes: Reload on code changes (app install/update, config.php)
- To progressively improve the performance: Opt-in/out classes from the per request global reset
- Task: Introduce an attribute to opt-out classes
- Task: Introduce "magic" detection if class's constructor argument is bound to the request context (user, session, userFolder, request, response, ...?)
References
Issues
PRs
cc @CarlSchwan @come-nc @Altahrim @provokateurin for reference. Feel free to amend as you whish.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the referenced issue #36290 and pull request #58541 to understand the existing FrankenPHP work. Then review the listed critical and optional tasks, including static-variable handling, open database transactions, debugging, reloads, and request-state resets. Done would require a defined, tested scope for supporting FrankenPHP worker mode.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- php
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100