在CakePHP中查找内存和CPU时间瓶颈
作者:互联网
我读了this,但它不适合我的解决方案.
我需要在CakePHP 2应用程序中找出内存和CPU时间瓶颈.
通过在控制器操作中使用microtime和memory_get_usage,我发现了一些线索.我解决了一些.但是很难一一诊断每个控制器的动作.
我需要记录每个操作的CPU和内存负载.我打算在控制器中放入2个全局变量.然后在beforeFilter和afterFilter中计算它们,并记录下来以供事后检查.
这是正确的方法还是您可以推荐其他解决方案?
class AppController extends Controller {
var $requestStartTime = 0;
var $requestDifTime = 0;
var $memoryBefore = 0;
var $memoryAfter = 0;
function beforeFilter() {
$requestStartTime = microtime(true);
$memoryBefore =memory_get_usage(true);
}
function afterFilter() {
$requestDifTime = microtime(true) - $requestStartTime;
$memoryAfter = memory_get_usage(true);
$myFile = TMP.'logs'.DS.'mylog.txt';
$fh = fopen($myFile, 'a');
$string = "start time:" . $requestStartTime .
" dif time: " . $requestDifTime
" memory usage: " . $memoryBefore . " and " . $memoryAfter
."\n";
fwrite($fh,$string);
fclose($fh);
}
}
解决方法:
在使用PHP以及包括CakePHP在内的任何PHP框架时,发现的最好的工具是“ Xdebug”. Xdebug是一个PHP扩展,可以启用它以提供概要分析输出文件,可以使用“ Webgrind”(或CallGrind等)之类的工具进行分析.
Webgrind将获取xdebug跟踪文件,并为您提供时间和资源分配的可视化树.这使您可以有选择地深入研究在系统执行期间进行的方法和函数调用,并找出浪费时间和资源的位置.
此外,Xdebug使您可以开始调试应用程序.您可以分配断点,并暂停执行,修改值和逐步执行代码,从而为开发提供了更灵活的调试方法.
在使用CakePHP构建事物以及在CakePHP本身的内核上构建时,这是一个有价值的工具.
标签:cakephp-2-0,cakephp,cpu-usage,memory-leaks,php 来源: https://codeday.me/bug/20191101/1980330.html