mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-09-06 01:46:04 +00:00
Added memory limits for AsyncWorkers
This commit is contained in:
@ -47,9 +47,11 @@ class AsyncPool{
|
||||
$this->server = $server;
|
||||
$this->size = $size;
|
||||
|
||||
$memoryLimit = (int) max(-1, (int) $this->server->getProperty("memory.async-worker-hard-limit", 1024));
|
||||
|
||||
for($i = 0; $i < $this->size; ++$i){
|
||||
$this->workerUsage[$i] = 0;
|
||||
$this->workers[$i] = new AsyncWorker($this->server->getLogger(), $i + 1);
|
||||
$this->workers[$i] = new AsyncWorker($this->server->getLogger(), $i + 1, $memoryLimit);
|
||||
$this->workers[$i]->setClassLoader($this->server->getLoader());
|
||||
$this->workers[$i]->start();
|
||||
}
|
||||
@ -61,9 +63,12 @@ class AsyncPool{
|
||||
|
||||
public function increaseSize(int $newSize){
|
||||
if($newSize > $this->size){
|
||||
|
||||
$memoryLimit = (int) max(-1, (int) $this->server->getProperty("memory.async-worker-hard-limit", 1024));
|
||||
|
||||
for($i = $this->size; $i < $newSize; ++$i){
|
||||
$this->workerUsage[$i] = 0;
|
||||
$this->workers[$i] = new AsyncWorker($this->server->getLogger(), $i + 1);
|
||||
$this->workers[$i] = new AsyncWorker($this->server->getLogger(), $i + 1, $memoryLimit);
|
||||
$this->workers[$i]->setClassLoader($this->server->getLoader());
|
||||
$this->workers[$i]->start();
|
||||
}
|
||||
|
@ -31,17 +31,27 @@ class AsyncWorker extends Worker{
|
||||
private $logger;
|
||||
private $id;
|
||||
|
||||
public function __construct(MainLogger $logger, int $id){
|
||||
/** @var int */
|
||||
private $memoryLimit;
|
||||
|
||||
public function __construct(MainLogger $logger, int $id, int $memoryLimit){
|
||||
$this->logger = $logger;
|
||||
$this->id = $id;
|
||||
$this->memoryLimit = $memoryLimit;
|
||||
}
|
||||
|
||||
public function run(){
|
||||
$this->registerClassLoader();
|
||||
$this->logger->registerStatic();
|
||||
|
||||
gc_enable();
|
||||
ini_set("memory_limit", '-1');
|
||||
|
||||
if($this->memoryLimit > 0){
|
||||
ini_set('memory_limit', $this->memoryLimit . 'M');
|
||||
$this->logger->debug("Set memory limit to " . $this->memoryLimit . " MB");
|
||||
}else{
|
||||
ini_set('memory_limit', '-1');
|
||||
$this->logger->debug("No memory limit set");
|
||||
}
|
||||
|
||||
global $store;
|
||||
$store = [];
|
||||
|
Reference in New Issue
Block a user