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]);
}
}