Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php:memory_get_usage(true)不';增加_Php_Memory - Fatal编程技术网

php:memory_get_usage(true)不';增加

php:memory_get_usage(true)不';增加,php,memory,Php,Memory,有个奇怪的问题。我想检查函数的内存使用情况并使用 class test { public function __construct() { $start = memory_get_usage(1); runFunctionNeededToCheck(); var_dump(memory_get_usage(1) - $start); } } 课堂测试{ 公共函数构造(){ $start=内存获取使用率(1); run

有个奇怪的问题。我想检查函数的内存使用情况并使用 class test { public function __construct() { $start = memory_get_usage(1); runFunctionNeededToCheck(); var_dump(memory_get_usage(1) - $start); } } 课堂测试{ 公共函数构造(){ $start=内存获取使用率(1); runfunctionneedtocheck(); 变量转储(内存获取使用率(1)-$start); } }

但是它只返回0,mem的使用率没有增加,而我在这个函数中创建了几十个数组、对象和一些db事务。没有real_usage标志,我得到了一些大于0的赋值,但我只需要这个脚本/函数的内存使用量

你有什么想法吗?或者你知道为什么记忆会持续存在吗

提前thx

编辑

我试过一点,似乎函数不是问题,但是如果你在一个对象中运行这段代码,你就到了我的终点。。。(很抱歉,一开始我没有提到)

Doh-效果


在函数结束时清除所有局部变量。谢谢

据我所知,在调用
var\u dump()
命令时,您调用的函数本身将被清除

尝试将相同的行放在函数本身中,这可能会对问题有所帮助

function runFunctionNeededToCheck()
{
    $start = memory_get_usage(1);

    //do something here....//

    return (memory_get_usage(1) - $start);
}
$memUsage = runFunctionNeededToCheck();
echo $memUsage;
当然,内存使用是否有任何差异完全取决于函数的功能-为了确保它使用了更多内存,请尝试打开一个图像文件或其他文件,这样您就知道使用的内存将比以前更多。

Hmm它可以工作:

<?php
class test {

    public function __construct() {
        $start = memory_get_usage(1);
        range(1, 100000);
        var_dump(array('start' => $start, 'end' => memory_get_usage(1), 'sub' => memory_get_usage(1) - $start));
    }
}

$v = new test();

也许你的函数不会创建任何新变量或最终清除它们?

我认为问题是,函数有自己的堆栈,一旦函数完成,这个堆栈就会被清除,因此内存使用量将与以前相同或几乎相同。Thx供你参考。我试过一点,似乎函数不是问题,但是如果你在一个对象中运行这个代码,你就到了我的终点…这可能会对你有更多帮助:是的。。。好的-这是合乎逻辑的。。。在函数结束时清除所有局部变量。谢谢!
array(3) {
  ["start"]=>
  int(786432)
  ["end"]=>
  int(1048576)
  ["sub"]=>
  int(262144)
}