Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork9.7k
Fix performance (PHP5) and memory (PHP7) issues when using token_get_all#17377
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
…y manager will not release small buckets to OS automatically
Tobion commentedJan 15, 2016
LGTM 👍 Status: Reviewed |
fabpot commentedJan 15, 2016
Thank you@nicolas-grekas. |
… token_get_all (nicolas-grekas, peteward)This PR was merged into the 2.3 branch.Discussion----------Fix performance (PHP5) and memory (PHP7) issues when using token_get_all| Q | A| ------------- | ---| Bug fix? | yes| New feature? | no| BC breaks? | no| Deprecations? | no| Tests pass? | yes| Fixed tickets |#16868| License | MIT| Doc PR | -Although it's not the case anymore on PHP 7, on PHP 5, `is_array` checks are much slower than `isset` checks.Also from@peteward in#17384:> New PHP7 memory manager will not release small buckets to OS automatically in cases exposed by `token_get_all()`. This function call addition specifically for PHP7 will reclaim this memory to keep the footprint down of long processe> See above ticket and suggested actions by PHP internals team for long-running tasks (https://bugs.php.net/70098) - I think `cache:clear/warmup` on a heavy app justifies this.> We're running on cloud-based hosting platforms under memory limitations (Platform.sh). When memory is exceeded we're into swap and the cache clearing process goes from seconds to minutes for the initial deployment, which really slows our development workflow and also causes holding page delays.Commits-------e555aad Add gc_mem_caches() call for PHP7 after itoken_get_all() as new memory manager will not release small buckets to OS automaticallyd1f72d8 Fix perf and mem issue when using token_get_all
| protectedfunctionnormalizeToken($token) | ||
| { | ||
| if (is_array($token)) { | ||
| if (isset($token[1]) &&'b"' !==$token) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
what is this'b"' case about?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
a funny special case of the tokenizer, seehttps://3v4l.org/P4ZNQ
Although it's not the case anymore on PHP 7, on PHP 5,
is_arraychecks are much slower thanissetchecks.Also from@peteward in#17384: