4
4
5
5
namespace Yiisoft \Yii \Debug \Collector ;
6
6
7
+ use JetBrains \PhpStorm \ArrayShape ;
8
+ use Yiisoft \Yii \Console \Event \ApplicationStartup ;
7
9
use Yiisoft \Yii \Http \Event \AfterEmit ;
8
10
use Yiisoft \Yii \Http \Event \AfterRequest ;
9
11
use Yiisoft \Yii \Http \Event \BeforeRequest ;
@@ -19,15 +21,23 @@ final class WebAppInfoCollector implements CollectorInterface, IndexCollectorInt
19
21
private float $ requestProcessingTimeStarted = 0 ;
20
22
private float $ requestProcessingTimeStopped = 0 ;
21
23
24
+ #[ArrayShape([
25
+ 'applicationProcessingTime ' => 'float|int ' ,
26
+ 'applicationPreload ' => 'float|int ' ,
27
+ 'requestProcessingTime ' => 'float|int ' ,
28
+ 'applicationEmit ' => 'float|int ' ,
29
+ 'memoryPeakUsage ' => 'int ' ,
30
+ 'memoryUsage ' => 'int ' ,
31
+ ])]
22
32
public function getCollected (): array
23
33
{
24
34
return [
25
- 'application_processing_time ' => $ this ->applicationProcessingTimeStopped - $ this ->applicationProcessingTimeStarted ,
26
- 'application_preload ' => $ this ->requestProcessingTimeStarted - $ this ->applicationProcessingTimeStarted ,
27
- 'request_processing_time ' => $ this ->requestProcessingTimeStopped - $ this ->requestProcessingTimeStarted ,
28
- 'application_emit ' => $ this ->applicationProcessingTimeStopped - $ this ->requestProcessingTimeStopped ,
29
- 'memory_peak_usage ' => memory_get_peak_usage (),
30
- 'memory_usage ' => memory_get_usage (),
35
+ 'applicationProcessingTime ' => $ this ->applicationProcessingTimeStopped - $ this ->applicationProcessingTimeStarted ,
36
+ 'applicationPreload ' => $ this ->requestProcessingTimeStarted - $ this ->applicationProcessingTimeStarted ,
37
+ 'requestProcessingTime ' => $ this ->requestProcessingTimeStopped - $ this ->requestProcessingTimeStarted ,
38
+ 'applicationEmit ' => $ this ->applicationProcessingTimeStopped - $ this ->requestProcessingTimeStopped ,
39
+ 'memoryPeakUsage ' => memory_get_peak_usage (),
40
+ 'memoryUsage ' => memory_get_usage (),
31
41
];
32
42
}
33
43
@@ -37,22 +47,22 @@ public function collect(object $event): void
37
47
return ;
38
48
}
39
49
40
- if ($ event instanceof BeforeRequest) {
50
+ if ($ event instanceof ApplicationStartup) {
51
+ $ this ->applicationProcessingTimeStarted = microtime (true );
52
+ } elseif ($ event instanceof BeforeRequest) {
41
53
$ this ->requestProcessingTimeStarted = microtime (true );
42
- $ this ->applicationProcessingTimeStarted = $ event ->getRequest ()->getAttribute (
43
- 'applicationStartTime ' ,
44
- $ this ->requestProcessingTimeStarted
45
- );
46
54
} elseif ($ event instanceof AfterRequest) {
47
55
$ this ->requestProcessingTimeStopped = microtime (true );
48
56
} elseif ($ event instanceof AfterEmit) {
49
57
$ this ->applicationProcessingTimeStopped = microtime (true );
50
58
}
51
59
}
52
60
61
+ #[ArrayShape(['phpVersion ' => 'string ' , 'time ' => 'float|int ' , 'memory ' => 'int ' , 'timestamp ' => 'float|int ' ])]
53
62
public function getIndexData (): array
54
63
{
55
64
return [
65
+ 'phpVersion ' => PHP_VERSION ,
56
66
'time ' => $ this ->requestProcessingTimeStopped - $ this ->requestProcessingTimeStarted ,
57
67
'memory ' => memory_get_peak_usage (),
58
68
'timestamp ' => $ this ->requestProcessingTimeStarted ,
0 commit comments