如何通过程序来访问分析数据

3.4 版本
维护中的版本

多数时候,profiler(分析器)信息是通过基于web的可视化界面来进行访问和分析的。然而,你也可以通过程序取出分析信息,这得益于 profiler 服务。

当响应对象可用时,使用 loadProfileFromResponse() 访问来访问与之关联的分析结果:

1
2
// ... $profiler is the 'profiler' service / $profiler即是'profiler'服务
$profile = $profiler->loadProfileFromResponse($response);

当分析器存储了一个请求中的数据时,会关联一个token给它;这个token在响应的 X-Debug-Token HTTP 头中可用。使用这个token,你可以访问到过往响应中的任何分析结果,这得益于 loadProfile() 方法:

1
2
$token = $response->headers->get('X-Debug-Token');
$profile = $container->get('profiler')->loadProfile($token);

当分析器被开启但web debug toolbar(除错工具条)没有开启时,可以在页面内使用浏览器的“开发者工具”来侦测 X-Debug-Token HTTP 头。

profiler 服务也提供了 find()方法以基于某些标准来寻找tokens:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// get the latest 10 tokens
// 获取最新的10个token
$tokens = $container->get('profiler')->find('', '', 10, '', '', '');
 
// get the latest 10 tokens for all URL containing /admin/
// 获取最新的10个“URL中包含有/admin/”的token
$tokens = $container->get('profiler')->find('', '/admin/', 10, '', '', '');
 
// get the latest 10 tokens for local POST requests
// 获取最新的10个“本地POST请求”的token
$tokens = $container->get('profiler')->find('127.0.0.1', '', 10, 'POST', '', '');
 
// get the latest 10 tokens for requests that happened between 2 and 4 days ago
// 获取最新的10个“请求发生在前4天到前2天之间”的token
$tokens = $container->get('profiler')
    ->find('', '', 10, '', '4 days ago', '2 days ago');

本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。

登录symfonychina 发表评论或留下问题(我们会尽量回复)