Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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
CakePHP:在行为中使用ClassRegistry::removeObject()_Php_Cakephp_Cakephp 2.0 - Fatal编程技术网

CakePHP:在行为中使用ClassRegistry::removeObject()

CakePHP:在行为中使用ClassRegistry::removeObject(),php,cakephp,cakephp-2.0,Php,Cakephp,Cakephp 2.0,我目前正在做一个在内部使用插件模型的行为 每次我需要查找我使用的参考资料时: 因此它将初始化保存数据的模型。 这是一个好主意 要在脚本执行时保存内存?还是会增加更多的时间? 这种行为在代码中经常使用。。。因此,每个增益都是必要的。以下是CakePHP的ClassRegistry::removeObject($key)函数的代码: public static function removeObject($key) { $_this = ClassRegistry::getInstan

我目前正在做一个在内部使用插件模型的行为

每次我需要查找我使用的参考资料时:

因此它将初始化保存数据的模型。 这是一个好主意

要在脚本执行时保存内存?还是会增加更多的时间?
这种行为在代码中经常使用。。。因此,每个增益都是必要的。

以下是CakePHP的ClassRegistry::removeObject($key)函数的代码:

 public static function removeObject($key) {
    $_this = ClassRegistry::getInstance();
    $key = Inflector::underscore($key);
    if (isset($_this->_objects[$key])) {
        unset($_this->_objects[$key]);
    }
}
实际上,它所做的只是在一个数组中取消设置相关的键,该数组可能包含所有CakePHP对象。PHP中的unset()函数不会立即释放内存,尽管PHP最终可能会回收内存。由于ClassRegistry::removeObject()中没有太多内容,因此我不会太担心它会占用更多的处理


但也要记住,一旦PHP脚本完成执行,内存也将被回收。因此,如果只能在脚本末尾调用ClassRegistry::removeObject(),那么调用它就没有什么意义了。PHP并不是专门为手动内存管理而设计的。如果内存真的开始成为一个问题,你也可以考虑用你的应用程序可以用Exchange()调用另一种语言编写外部的东西。因此,应该释放相当数量的内存。你知道cakephp引导的模型会消耗多少内存吗?你可以使用php函数memory\u get\u usage()来帮助确定内存消耗。
$this->Viewed = ClassRegistry::removeObject('Viewed.Viewed')
 public static function removeObject($key) {
    $_this = ClassRegistry::getInstance();
    $key = Inflector::underscore($key);
    if (isset($_this->_objects[$key])) {
        unset($_this->_objects[$key]);
    }
}