nextcloud / nextcloud/server

Support FrankenPHP

Open
#58,807 5 comments 11 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.