Skip to content
This repository was archived by the owner on Feb 7, 2022. It is now read-only.

Commit 45683e5

Browse files
committed
Fixed bug in MemoryLimit, the parsing was not correct, so the worker died after every check.
Modified readme
1 parent 03c8ac5 commit 45683e5

File tree

4 files changed

+47
-19
lines changed

4 files changed

+47
-19
lines changed

README.md

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
# Benutzung
1818
## Client
19-
Beispiel Benutzung des Dispatchers
19+
Beispiel Benutzung des Clients
2020

2121
```php
2222
<?php
@@ -32,7 +32,7 @@ $client = new \dmank\gearman\Client($serverCollection);
3232
```
3333

3434
### Asynchrone Abarbeitung
35-
Methode "executeJobInBrackground", erwartet den Methodennamen der ausgeführt werden soll sowie den Workload.
35+
Methode "executeInBackground", erwartet den Methodennamen der ausgeführt werden soll sowie den Workload.
3636
Als Rückgabe bekommt man das zugewiesene Jobhandle zurück um den Status überprüfen zu können.
3737

3838
### Synchrone Abarbeitung
@@ -119,4 +119,17 @@ Nach erfolgreicher Ausführung
119119

120120
Im Fehlerfall
121121

122-
* FunctionFailureEvent::FUNCTION_ON_FAILURE
122+
* FunctionFailureEvent::FUNCTION_ON_FAILURE
123+
124+
125+
### Mitgelieferte Eventsubscriber
126+
127+
#### Monolog
128+
Am besten zum Debuggen oder um den Ablauf der Logik zu verfolgen.
129+
Der übergebene Logger wird auch an den eigentlichen Job weitergegeben sofern er "LoggerAware" ist.
130+
131+
#### MaxRunTime
132+
Prüft vor Beginn und nach Ende einer Abarbeitung, sowie wenn keine Jobs vorhanden sind, ob die Maximallaufzeit des Workers erreich ist.
133+
134+
#### MemoryLimit
135+
Prüft vor Beginn und nach Ender einer Abarbeitung ob die angegebene Grenze an Speicher aufgebraucht/überschritten ist. In dem Falle würde der Worker beendet werden.

src/Worker.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
use dmank\gearman\event\FunctionEvent;
66
use dmank\gearman\event\FunctionFailureEvent;
77
use dmank\gearman\event\RegisterFunctionEvent;
8-
use dmank\gearman\event\subscriber\DefaultWorkerBehaviour;
98
use dmank\gearman\event\WorkerEvent;
109
use dmank\gearman\event\WorkerExceptionEvent;
1110
use dmank\gearman\exception\NoFunctionGiven;

src/event/subscriber/MemoryLimit.php

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -61,19 +61,6 @@ private function memoryLimitAlmostExceeded()
6161
);
6262
}
6363

64-
private function informLogger()
65-
{
66-
if (!is_null($this->logger)) {
67-
$this->logger->notice(
68-
sprintf(
69-
'Memory limit almost exceeded. Max limit is %s, used %s so far.',
70-
$this->maxMemoryLimit,
71-
round((memory_get_usage(true) * 1.2) / 1048576, 2) . 'M'
72-
)
73-
);
74-
}
75-
}
76-
7764
/**
7865
* @param $value
7966
* @return int
@@ -85,12 +72,26 @@ private function returnBytes($value)
8572

8673
switch ($last) {
8774
case 'g':
75+
$value *= 1024;
8876
case 'm':
77+
$value *= 1024;
8978
case 'k':
9079
$value *= 1024;
91-
break;
9280
}
9381

94-
return (int)$value;
82+
return $value;
83+
}
84+
85+
private function informLogger()
86+
{
87+
if (!is_null($this->logger)) {
88+
$this->logger->notice(
89+
sprintf(
90+
'Memory limit almost exceeded. Max limit is %s, used %s so far.',
91+
$this->maxMemoryLimit,
92+
round((memory_get_usage(true) * 1.2) / 1048576, 2) . 'M'
93+
)
94+
);
95+
}
9596
}
9697
}

tests/unit/event/subscriber/MemoryLimitTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,19 @@ public function testMemoryLimitExceededOnAfterRun()
2020
$workerEvent = new WorkerEvent($worker);
2121
$subscriber->onAfterRun($workerEvent);
2222
}
23+
24+
public function testMemoryLimitNotExceededOnAfterRun()
25+
{
26+
$subscriber = new MemoryLimit('10g');
27+
28+
$worker = $this->getMockBuilder('dmank\gearman\Worker')
29+
->disableOriginalConstructor()
30+
->getMock();
31+
32+
$worker->expects($this->exactly(0))
33+
->method('destroyWorker');
34+
35+
$workerEvent = new WorkerEvent($worker);
36+
$subscriber->onAfterRun($workerEvent);
37+
}
2338
}

0 commit comments

Comments
 (0)