I have found out, that if child process exited by function exit() with return code 0, it is not handled as process termination in flexible pool.
The reason is in code reactphp-child-process-messenger/src/Factory.php#L211, where for exitCode zero is not thrown error
if ($exitCode === 0) {
return;
}
If child process calls exit(), Flexible pool will still count this child, although process is terminated.
There is question, how to resolve this. I have a few ideas:
1) Is there important to ignore exitCode === 0 in Messenger?
2) Try to catch exit event on React\ChildProcess\Process
3) Add to documentation, it is important to Terminate child process with non-zero exit codes to keep Flexible pool working.
I have found out, that if child process exited by function
exit()
with return code 0, it is not handled as process termination in flexible pool. The reason is in code reactphp-child-process-messenger/src/Factory.php#L211, where for exitCode zero is not thrown errorIf child process calls
exit()
, Flexible pool will still count this child, although process is terminated.There is question, how to resolve this. I have a few ideas: 1) Is there important to ignore
exitCode === 0
in Messenger? 2) Try to catchexit
event onReact\ChildProcess\Process
3) Add to documentation, it is important to Terminate child process with non-zero exit codes to keep Flexible pool working.