分析PHP页面内存使用情况的好方法是什么?例如,查看我的数据使用了多少内存,和/或哪些函数调用分配的内存最多.
xdebug似乎没有在其分析功能中提供内存信息.
xdebug 确实在其跟踪功能中提供了它.这非常接近我想要的,除了大量的数据是压倒性的,因为它显示了每个函数调用的内存增量.如果可以隐藏一定深度以下的调用,可能使用一些GUI工具,这将解决我的问题.
还有别的事吗?
我正在运行一个PHP守护进程来进行分析.
启动的php进程加载所有必需的数据,分叉自己在所有核心上分配工作负载,等待分叉的子进程完成,并收集子进程生成的结果.
由于我与其他用户共享CLI环境,因此我需要通过将php.ini值注入shell调用来启动xdebug概要分析.
$ php -d xdebug.profiler_enable=1 -d xdebug.profiler_output_dir="/home/xxx" daemon.php
Run Code Online (Sandbox Code Playgroud)
生成的cachegrind文件,如何配置父级,因此显示90%的睡眠.
有没有办法在不构建驱动程序的情况下对工作人员进行分析直接加载它们?
谢谢
我还没有找到一个优雅的解决方案.我有一个类,我希望在不修改函数的情况下跟踪内存使用情况:
class Example
{
public function hello($name)
{
$something = str_repeat($name, pow(1024, 2));
}
}
$class = new Example;
$class->hello('a');
Run Code Online (Sandbox Code Playgroud)
所以任务是,在hello()没有干扰的情况下使用多少内存?
注意:此方法的内存使用量应为1MB.我试过打包电话memory_get_usage();无济于事:
class Example
{
public function hello($name)
{
$something = str_repeat($name, pow(1024, 2));
}
}
$class = new Example;
$s = memory_get_usage();
$class->hello('a');
echo memory_get_usage() - $s;
Run Code Online (Sandbox Code Playgroud)
这只会产生144字节数(根本不正确).我通过使用ReflectionMethod该类尝试了各种魔法.
我有一种感觉,我需要做的是计算方法的差异:(.如果有人能想到更干净的东西那么你真的会让我的一天.
编辑:我应该提到这是在基准测试应用程序的上下文中.因此,虽然memory_get_peak_usage在正确返回内存使用的意义上工作,但它也会在高内存方法之后运行基准测试.现在,如果有办法重置内存统计数据,那也可能是好的.