Improve chunk upload AssemblyStream performance #26062
Merged
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.
Description
The assembly stream's
steam_read
method is usually called for every 8192 bytes by PHP.In the current code, it would call
fopen()
on the chunk's node in every call, which means for every 8k bytes, which is very unefficient.This fix caches the stream until the end is reached before resolving the next node.
Related Issue
Partial fix for #25493
Motivation and Context
Chunk assembly is too slow in the new endpoint!
How Has This Been Tested?
Check out this other PR #25494 which contains the fix as well.
Upload a big file of around 60+ MB in the web UI in a subfolder.
Check the network console for the final "MOVE" of ".file".
Before: 20440ms
After: 600ms
Types of changes
Checklist:
Backports:
Please review @DeepDiver1975 @owncloud/filesystem