Check for reaching the memory limit

This commit is contained in:
Michael 2021-01-01 23:10:38 +00:00
parent 9a6141dcbe
commit 78f67c1e0e

View file

@ -1189,6 +1189,11 @@ class Worker
*/ */
private static function forkProcess(bool $do_cron) private static function forkProcess(bool $do_cron)
{ {
if (DI::process()->isMinMemoryReached()) {
Logger::warning('Memory limit reached - quitting');
return;
}
// Children inherit their parent's database connection. // Children inherit their parent's database connection.
// To avoid problems we disconnect and connect both parent and child // To avoid problems we disconnect and connect both parent and child
DBA::disconnect(); DBA::disconnect();
@ -1230,7 +1235,7 @@ class Worker
{ {
// Worker and daemon are started from the command line. // Worker and daemon are started from the command line.
// This means that this is executed by a PHP interpreter without runtime limitations // This means that this is executed by a PHP interpreter without runtime limitations
if (in_array(DI::mode()->getExecutor(), [Mode::DAEMON, Mode::WORKER])) { if (function_exists('pcntl_fork') && in_array(DI::mode()->getExecutor(), [Mode::DAEMON, Mode::WORKER])) {
self::forkProcess($do_cron); self::forkProcess($do_cron);
} else { } else {
$process = new Core\Process(DI::logger(), DI::mode(), DI::config(), $process = new Core\Process(DI::logger(), DI::mode(), DI::config(),