Repository navigation
perf: skip tokenizing the default Config/Filters.php files during filter discovery - #10700
Open
mdalikadar wants to merge 2 commits into
Open
mdalikadar wants to merge 2 commits into
mdalikadar wants to merge 2 commits into
Conversation
This branch has not been deployed
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.
Description
Filters::discoverFilters()ranFileLocator::getClassname()on everyConfig/Filters.phpit found, which reads and tokenizes the file, and then skipped the app and system ones because their class isConfig\FiltersorCodeIgniter\Config\Filters. In a default app those are the only two files, so every request parsed two files it never used.The two paths are now skipped before
getClassname()is called. Every other file keeps the existing class-name check. The paths are built withDIRECTORY_SEPARATOR, assearch()returnsrealpath()results.On my machine
new Filters()with discovery on goes from about 134 µs to about 60 µs (PHP 8.5 CLI, so indicative). It mostly helps apps withoutFileLocatorCached.Edge case: an
app/Config/Filters.phpthat declares a class other thanConfig\Filtersused to be included by discovery and is now skipped. That breaks the framework's conventions, and discovery has been deprecated since 4.4.2.Fixes #10616
Checklist: