Ensure out of memory events are raised before exiting the process #1341
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.
Problem
I want to introduce extra logging into our application to log when a supervisor (or master) runs out of memory. I was struggling to get these events to fire despite lowering the memory limits to very small amounts.
From my testing it turns out that the
$master->terminate(12);
call will eventually callexitProcess
on theSupervisor
which calls to the systemexit
function. This means that the PHP process ends immediately and the line which raises the event is never hit.Terminate calls exit
exit in turn calls exitProcess
Solution
The solution seems to be simply raising the event before terminating the process.
Other issues
It is also worth raising that the
$supervisor
instance isn't serialisable as it holds a reference to aProcess
instance. This meant that my first attempt to handle these events on a queue failed.