Tôi đã tìm được cách mà tôi cho là phù hợp với trường hợp sử dụng của chúng tôi. Tôi tạo ra một performance.php mới tập tin trong thư mục web mà trông như thế này:
<?php
/**
* This file is only used for doing realtime performance measurement
* Right now only the microtime is calculated, but in the future the
* xhproof module could be used: http://de2.php.net/manual/en/book.xhprof.php
*
* MAKE SURE TO NOT USE THIS FILE IN PRODUCTION FOR OTHER STUFF THAN REAL TIME
* PERFORMANCE MEASUREMENT
*/
$GLOBALS['PerformanceTwigExtensionMicrotime'] = microtime(true);
require_once __DIR__.'/app.php';
Tôi cũng đăng ký một phần mở rộng cành lá trong đó sử dụng toàn cầu và tính toán thời gian đã trôi qua:
<?php
namespace Acme\DemoBundle\Extension;
class PerformanceTwigExtension extends \Twig_Extension {
public function getFunctions() {
return array(
'performance_exectime' => new \Twig_Function_Method($this, 'getExecTime')
);
}
public function getExecTime() {
if (!isset($GLOBALS['PerformanceTwigExtensionMicrotime'])) {
return 0;
}
$durationInMilliseconds = (microtime(true) - $GLOBALS['PerformanceTwigExtensionMicrotime']) * 1000;
return number_format($durationInMilliseconds, 3, '.', '');
}
public function getName() {
return "performance_extension";
}
}
Khi chúng ta muốn để thực hiện một số phép đo hiệu suất, chúng tôi chỉ có thể sử dụng performance.php. Mẫu gọi hàm và sau đó có thể hiển thị thời gian thực hiện:
{{ performance_exectime() }}
Nó ra 0 nếu thời gian bắt đầu không được thiết lập (ví dụ như khi app.php bình thường được sử dụng), vì vậy nó là an toàn để sử dụng trong mọi trường hợp . Mặt khác, nếu ai đó quyết định sử dụng performance.php như một điểm vào, nó không nên phá vỡ bất cứ điều gì vì chỉ có một biến toàn cầu là khác nhau.
Còn hệ thống định dạng dựng sẵn thì sao? Nó sẽ có nhiều tính năng tuyệt vời hơn trong 2.1, chẳng hạn như đồ thị thời gian chi tiết, hơi giống với biểu đồ của firebug và webkit. – gilden
Tôi muốn thực hiện điều này trong môi trường sản xuất trên một trang đặc biệt. Ngay bây giờ tôi không có cái nhìn sâu sắc như thế nào profiler hoạt động. Tôi có thể chỉ "kích hoạt" bằng cách nào đó khi tôi phục vụ một hành động và không có tác động đến hiệu suất trên tất cả các hành động khác không? – Sgoettschkes
Đối với hồ sơ trên một máy chủ sản xuất, có thể bạn sẽ muốn nhìn vào xhprof ... – greg0ire