8000 [MemoryDataCollector] Stop being optimistic about memory usage · symfony/symfony@4c0c588 · GitHub
[go: up one dir, main page]

Skip to content

Commit 4c0c588

Browse files
committed
[MemoryDataCollector] Stop being optimistic about memory usage
Take into account the memory used in the kernel.terminate listeners
1 parent e621b6f commit 4c0c588

File tree

2 files changed

+36
-22
lines changed

2 files changed

+36
-22
lines changed

src/Symfony/Component/HttpKernel/DataCollector/MemoryDataCollector.php

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,17 @@
2121
*/
2222
class MemoryDataCollector extends DataCollector
2323
{
24+
public function __construct()
25+
{
26+
$this->data = array('memory' => 0);
27+
}
28+
2429
/**
2530
* {@inheritdoc}
2631
*/
2732
public function collect(Request $request, Response $response, \Exception $exception = null)
2833
{
29-
$this->data = array(
30-
'memory' => memory_get_peak_usage(true),
31-
);
34+
$this->updateMemoryUsage();
3235
}
3336

3437
/**
@@ -41,6 +44,14 @@ public function getMemory()
4144
return $this->data['memory'];
4245
}
4346

47+
/**
48+
* Updates the memory usage data.
49+
*/
50+
public function updateMemoryUsage()
51+
{
52+
$this->data['memory'] = memory_get_peak_usage(true);
53+
}
54+
4455
/**
4556
* {@inheritdoc}
4657
*/

src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ public function logSkippedListeners($eventName, Event $event, $listener)
204204
$skipped = false;
205205

206206
foreach ($skippedListeners as $skippedListener) {
207-
$skippedListener = $this->unwrapListener($skippedListener, $eventName);
207+
$skippedListener = $this->unwrapListener($skippedListener);
208208

209209
if ($skipped) {
210210
$info = $this->getListenerInfo($skippedListener, $eventName);
@@ -254,7 +254,7 @@ public function preListenerCall($eventName, $listener)
254254
*/
255255
private function getListenerInfo($listener, $eventName)
256256
{
257-
$listener = $this->unwrapListener($listener, $eventName);
257+
$listener = $this->unwrapListener($listener);
258258

259259
$info = array(
260260
'event' => $eventName,
@@ -329,9 +329,25 @@ private function updateProfiles($token, $updateChildren)
329329
*/
330330
private function saveInfoInProfile(Profile $profile, $updateChildren)
331331
{
332-
$profile->getCollector('time')->setEvents($this->stopwatch->getSectionEvents($profile->getToken()));
333-
$profile->getCollector('events')->setCalledListeners($this->getCalledListeners());
334-
$profile->getCollector('events')->setNotCalledListeners($this->getNotCalledListeners());
332+
try {
333+
$collector = $profile->getCollector('memory');
334+
$collector->updateMemoryUsage();
335+
} catch (\InvalidArgumentException $e) {
336+
}
337+
338+
try {
339+
$collector = $profile->getCollector('time');
340+
$collector->setEvents($this->stopwatch->getSectionEvents($profile->getToken()));
341+
} catch (\InvalidArgumentException $e) {
342+
}
343+
344+
try {
345+
$collector = $profile->getCollector('events');
346+
$collector->setCalledListeners($this->getCalledListeners());
347+
$collector->setNotCalledListeners($this->getNotCalledListeners());
348+
} catch (\InvalidArgumentException $e) {
349+
}
350+
335351
$this->profiler->saveProfile($profile);
336352

337353
if ($updateChildren) {
@@ -341,19 +357,6 @@ private function saveInfoInProfile(Profile $profile, $updateChildren)
341357
}
342358
}
343359

344-
private function getListenerAsString($listener)
345-
{
346-
if (is_string($listener)) {
347-
return '[string] '.$listener;
348-
} elseif (is_array($listener)) {
349-
return '[array] '.(is_object($listener[0]) ? get_class($listener[0]) : $listener[0]).'::'.$listener[1];
350-
} elseif (is_object($listener)) {
351-
return '[object] '.get_class($listener);
352-
}
353-
354-
return '[?] '.var_export($listener, true);
355-
}
356-
357360
private function preDispatch($eventName, Event $event)
358361
{
359362
// wrap all listeners before they are called
@@ -437,7 +440,7 @@ private function wrapListener($eventName, $listener)
437440
};
438441
}
439442

440-
private function unwrapListener($listener, $eventName)
443+
private function unwrapListener($listener)
441444
{
442445
// get the original listener
443446
if (is_object($listener) && isset($this->wrappedListeners[$this->id][$listener])) {

0 commit comments

Comments
 (0)
0