| 199 |
lars |
1 |
<?php namespace Clockwork\DataSource;
|
|
|
2 |
|
|
|
3 |
use Clockwork\Request\Request;
|
|
|
4 |
|
|
|
5 |
// Data source for Xdebug, provides profiling data
|
|
|
6 |
class XdebugDataSource extends DataSource
|
|
|
7 |
{
|
|
|
8 |
// Adds profiling data path to the request
|
|
|
9 |
public function resolve(Request $request)
|
|
|
10 |
{
|
|
|
11 |
$request->xdebug = [ 'profile' => xdebug_get_profiler_filename() ];
|
|
|
12 |
|
|
|
13 |
return $request;
|
|
|
14 |
}
|
|
|
15 |
|
|
|
16 |
// Extends the request with full profiling data
|
|
|
17 |
public function extend(Request $request)
|
|
|
18 |
{
|
|
|
19 |
$profile = isset($request->xdebug['profile']) ? $request->xdebug['profile'] : null;
|
|
|
20 |
|
|
|
21 |
if ($profile && ! preg_match('/\.php$/', $profile) && is_readable($profile)) {
|
|
|
22 |
$request->xdebug['profileData'] = file_get_contents($profile);
|
|
|
23 |
|
|
|
24 |
if (preg_match('/\.gz$/', $profile)) {
|
|
|
25 |
$request->xdebug['profileData'] = gzdecode($request->xdebug['profileData']);
|
|
|
26 |
}
|
|
|
27 |
}
|
|
|
28 |
|
|
|
29 |
return $request;
|
|
|
30 |
}
|
|
|
31 |
}
|