2010-12-21 3 views
0

백엔드 코드 (Java 또는 PHP 또는 다른 것)에서 전역 변수를 가질 수없고 다른 사용자 (따라서 세션)가 동일한 값을 볼 수 없다는 것을 알고 있습니다. 이러한 사용자 세션에서 일부 값을 공유해야하는 경우 DB에 기록하고 매번 읽어야합니다. 이것은 나에게 무서운 낭비가 보인다.여러 세션에서 변수 공유

나는 아파치 프로세스 (또는 앱 서버)가 fork 할 것이고 따라서 전역 값을 가지고있는 것이 작동하지 않을 것이라고 알고 있지만 전문화 된 어플리케이션을보고 있다면 이것을 할 수있는 웹 서버가 있는가? 이것은 프로세스를 포크하는 대신 스레드를 사용하는 웹 서버에서 가능해야합니다. 그러나 전역 메모리를 공유해야한다면 제대로 액세스하려면 잠금 장치가 있어야합니다. 나는 그것이 (그리고 대부분은) 정말 버그가 될 수 있지만 DB에 비해 성능이 저하 될 것이라고 이해합니까?

생각?

  • 파브

답변

0

나는 전적으로 사실 잘 모르겠어요. 아파치는 각 사용자 연결을 개별적으로 처리합니다. 그러나 Java에서는 모든 사용자 세션에서 사용할 값을 저장할 수있는 응용 프로그램 수명 동안 존재하는 Singleton 객체를 가질 수 있음을 알고 있습니다.

서버 쪽에서 각 사용자 연결을 처리 할 때이 Singleton에 대한 각 액세스는 동일한 개체에 액세스하므로 동일한 값을 사용합니다.

응용 프로그램 범위 개체에 대한 추가 조사가 필요할 수 있습니다. 유스 케이스가 부족하여 무엇을 성취하려고하는지 정확히 모르겠지만 자바 웹 앱이이 분야에서 기대하는 것보다 더 많은 것을 할 수 있다는 것을 알 수 있습니다.

관련 문제