[8.x] Increase reserved memory for error handling#42646
Merged
taylorotwell merged 3 commits intolaravel:8.xfrom Jun 3, 2022
spawnia:increase-reserved-memory
Merged
[8.x] Increase reserved memory for error handling#42646taylorotwell merged 3 commits intolaravel:8.xfrom spawnia:increase-reserved-memory
taylorotwell merged 3 commits intolaravel:8.xfrom
spawnia:increase-reserved-memory
Conversation
Follow up to #42630 The error handler should be able to report exceptions arising from exceeding the PHP memory limit. Because of changes made to error handling, the previously configured value is no longer sufficiently large. A similar change was also done in Symfony a while ago, see symfony/symfony#44327. I used the following artisan command to determine the amount of memory required for error handling, using a reporter that simply writes to a file: ```php <?php declare(strict_types=1); namespace App\Console\Commands; use Illuminate\Console\Command; final class MeasureHandlerMemory extends Command { protected $signature = 'measure-handler-memory'; private int $peak; public function handle(): void { $this->peak = memory_get_peak_usage(); trigger_error('', E_USER_ERROR); } public function __destruct() { $used = memory_get_peak_usage() - $this->peak; echo "error handling used: " . $used . "\n"; $before = memory_get_usage(); $times = 10240; $reserve = str_repeat('x', $times); $after = memory_get_usage() - $before; echo 'repeat times ' . $times . ' reserves: ' . $after . "\n"; $ratio = $after / $times; echo 'ratio between bytes and repeat: ' . $ratio . "\n"; echo 'minimum times to repeat: ' . $used / $ratio . "\n"; } } ```
While validating the effectiveness of #42630 in our application, I found that the call `$error = error_get_last()` causes a tiny bit of memory usage. Thus, I think it is better to clear memory as soon as entering the handler.
chu121su12
pushed a commit
to chu121su12/framework
that referenced
this pull request
Jun 6, 2022
* Increase reserved memory for error handling Follow up to laravel#42630 The error handler should be able to report exceptions arising from exceeding the PHP memory limit. Because of changes made to error handling, the previously configured value is no longer sufficiently large. A similar change was also done in Symfony a while ago, see symfony/symfony#44327. I used the following artisan command to determine the amount of memory required for error handling, using a reporter that simply writes to a file: ```php <?php declare(strict_types=1); namespace App\Console\Commands; use Illuminate\Console\Command; final class MeasureHandlerMemory extends Command { protected $signature = 'measure-handler-memory'; private int $peak; public function handle(): void { $this->peak = memory_get_peak_usage(); trigger_error('', E_USER_ERROR); } public function __destruct() { $used = memory_get_peak_usage() - $this->peak; echo "error handling used: " . $used . "\n"; $before = memory_get_usage(); $times = 10240; $reserve = str_repeat('x', $times); $after = memory_get_usage() - $before; echo 'repeat times ' . $times . ' reserves: ' . $after . "\n"; $ratio = $after / $times; echo 'ratio between bytes and repeat: ' . $ratio . "\n"; echo 'minimum times to repeat: ' . $used / $ratio . "\n"; } } ``` * Free memory in HandleExceptions::handleShutdown() While validating the effectiveness of laravel#42630 in our application, I found that the call `$error = error_get_last()` causes a tiny bit of memory usage. Thus, I think it is better to clear memory as soon as entering the handler. * Update HandleExceptions.php Co-authored-by: Taylor Otwell <taylor@laravel.com>
QWp6t
added a commit
to roots/acorn
that referenced
this pull request
Jun 26, 2022
QWp6t
added a commit
to roots/acorn
that referenced
this pull request
Jun 26, 2022
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.
Follow up to #42630
The error handler should be able to report exceptions
arising from exceeding the PHP memory limit. Because
of changes made to error handling, the previously
configured value is no longer sufficiently large.
A similar change was also done in Symfony a while ago,
see symfony/symfony#44327.
I used the following artisan command to determine the amount
of memory required for error handling, using a reporter that
simply writes to a file:
It produced the following output for me: