마 젠토 레지스트리 이해


13

항상 궁금합니다. Magento에 모든 레지스트리 데이터가 어디에 저장되어 있습니까?

단일 객체 조차도 레지스트리에 저장되어 있음을 알고 있습니다. 그리고 registry는 Mage 클래스 의 정적 배열 변수 일뿐 입니다.

혼란을 풀기 위해 여기에 몇 가지 질문이 있습니다.

  1. 사용자마다 레지스트리가 다릅니 까? 사용자별로 ( HTTP 요청 당 ) 생성됩니까?

예를 들어

Mage::register('foo', 'Hello World'); //set a value for foo
Mage::registry('foo'); //will this return hello world for all HTTP users ?
  1. 레지스트리 데이터가 세션에 저장됩니까? 그렇지 않다면 Magento는 레지스트리 데이터를 호출 한 사용자를 어떻게 식별합니까?

Alan Storm의 블로그 기사이에 관한 StackOverFlow에 대한 답변 을 읽었습니다 . 그러나 나는 혼란을 죽일 수 없었다. 기본 사항이 엉망이라고 생각되면 수정하십시오. 감사




감사합니다 Amit Bera, 나는이 기사를 읽고이 질문을 게시하기 전에 Alan의 SOF 답변을 읽었습니다. 나는 거기에서 내 대답을 얻지 못했습니다.
Hashid

답변:


23

레지스트리는 데이터를 해당 요청에 고유 한 (사용자 또는 다른 것 이외의) 메모리에 저장하고 해당 요청 기간 동안 만 지속됩니다. 원칙은 매우 간단합니다. Mage클래스는 모든 요청에 ​​대해 단일 객체로 인스턴스화되고 인스턴스화 된 Mage 객체는 메모리에 남아 있으며 요청이 완료되고 응답이 전송 될 때까지 모든 클래스 (및 템플릿)에서 액세스 할 수 있습니다.

객체는 싱글 톤이므로 액세스 할 때마다 동일한 객체를 얻습니다. 일어나고있는 일은이 객체에 값을 저장한다는 것입니다. 따라서 한 클래스가 값을 저장하고 다른 클래스가이를 액세스하면 동일한 객체에서 작업하고 두 번째 클래스는 첫 번째 클래스 세트에서 값을 검색 할 수 있습니다.


1
따라서 하나의 요청에 대해서만 살아 있습니까? Magento에 페이지를로드하면 하나의 요청이 완료되고 레지스트리 데이터가 플러시됩니다.
Hashid

4
설정 한 예 값 Mage::register()은 해당 요청에 대해서만 지속됩니다. 사용자 별 데이터를 저장하려면 세션을 사용해야합니다. 레지스트리는 실제로 클래스간에 데이터를 이식 할 수 있도록 설계되었습니다.
Jonathan Hussey

1
말이 되네요! 싱글 톤 인스턴스에도 동일하게 적용됩니까?
Hashid

1
그렇습니다 getSingleton(). Mage클래스 의 메소드 를 보면 실제로 데이터를 레지스트리에 저장합니다.
Jonathan Hussey

3

레지스트리는 메모리에 저장되고 HTTP 요청 당이므로 다른 요청이나 사용자간에 데이터를 공유 할 수 없습니다.


그러나 Magento는 어떻게 HTTP 요청과 레지스트리를 매핑 할 것인가?
Hashid

2

응용 프로그램의 메모리에 저장된 Magento Registry .

스크립트 실행이 완료되면 레지스트리에 저장된 모든 항목이 사라 지므로 스크립트를 지우는 것에 대해 걱정할 필요가 없습니다 (실행중인 스크립트가 레지스트리에 큰 오브젝트를 저장하고 많은 항목을 반복하지 않는 한) 데이터).

이 경우 입력이 완료되면 등록을 취소해야합니다.

Registry는 Mage 클래스의 정적 속성입니다. 자세한 내용을 참조하십시오

그래도 여전히 좋은 설명을 찾지 못했습니다

2) 각 사용자마다 서버마다 요청마다 별도의 레지스트리가 있습니다.

이것이 당신의 마음에 거의 명확하지 않기를 바랍니다


감사합니다 liyakat. 게시하기 전에 prattski.com/2014/09/23/using-the-magento-registry-mageregister 를 읽었습니다 .P 그러나 Magento는 어떻게 변수와 사용자를 매핑합니까?
Hashid

1
@Hashid, Alan의 블로그를 통해 더 많은 아이디어를 얻을 수 있습니다. 코드에서 레지스트리가 각 요청과 작동하는 방식은 다음과 같습니다. alanstorm.com/magento_registry_singleton_tutorial
liyakat

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.