2014-03-25 7 views
0

현재 내부적으로 플러그인 모델을 사용하는 동작을 만들고 있습니다.CakePHP : 동작에서 ClassRegistry :: removeObject() 사용

내가 사용에 대한 참조를 찾을 필요가 때마다 :

$this->Viewed = ClassRegistry::init('Viewed.Viewed'); 

그래서이 데이터를 보유하고있는 모델을 초기화하기됩니다. 이 스크립트의 excecution 시간에 메모리를 저장

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

정말이 배열에 관련 키를 설정 해제됩니다하고있어 모두가 아마 모든 CakePHP의 객체를 보유 :

답변

0

여기 CakePHP의 ClassRegistry :: removeObject ($ 키) 함수에 대한 코드입니다. PHP의 unset() 함수는 메모리를 즉시 해제하지 않지만 PHP는 메모리를 결국 회수 할 수 있습니다. ClassRegistry :: removeObject()에서 많은 일이 일어나지 않기 때문에 훨씬 더 많은 처리를 필요로하지 않을 것입니다.

PHP 스크립트 실행이 끝나면 메모리도 회수됩니다. 따라서 스크립트 끝 부분에서만 호출 할 수있는 경우 ClassRegistry :: removeObject()를 호출 할 때 많은 부분이 없습니다. PHP는 그런 수동 메모리 관리를 위해 실제로 설계되지 않았습니다. 메모리가 정말로 문제가되기 시작하면, exec()를 사용하여 애플리케이션이 호출 할 수있는 다른 언어로 무언가를 작성하는 것도 고려해 볼 수 있습니다.

+0

내가 동의하지 않는 개체는 완전한 모델입니다. 따라서 공개 된 상당한 양의 메모리 여야합니다. 메모리 소비에있어 많은 생각이 있는데, cakephp에서 부트 스트랩 된 모델이 소비됩니까? – tranfuga25s

+0

PHP 함수 memory_get_usage() http://www.php.net/manual/en/function.memory-get-usage.php를 사용하면 메모리 사용량을 확인할 수 있습니다. – Kai

+0

고마워요! 당신이 연구와 함께 게시 유지 ... : D 조 – tranfuga25s

관련 문제