public function checkMemoryUsage()
{
$config = $this->config();
if (!empty($config->memory_limit)) {
$usage = explode(PHP_EOL, shell_exec(sprintf('ps -o rss -p %s', getmypid())));
if (!empty($usage[1])) {
$usage = trim($usage[1]) / 1024;
} else {
$usage = memory_get_usage() / 1024 / 1024;
}
if ($usage > $config->memory_limit) {
$this->log('WARN', "Memory limit of %d Mb has been reached. Current usage is %0.3f Mb.", $config->memory_limit, $usage);
return false;
} else {
if (time() - $this->lastMemoryUsageTime > 600) {
$this->lastMemoryUsageTime = time();
$this->log('SERVICE', 'Memory usage: %0.2f MB', $usage);
}
}
}
return true;
}