2011-09-21 3 views
0

나는 사용자 인증에 $ _SESSION을 사용하지만 세션에도 다른 변수를 저장하려고합니다. 그러나, 나는 얼마나 많은 세션이 서버에서 자원을 사용할 지 모른다. 세션이 필요하지 않은 경우에도 시작되므로 모든 페이지에서 session_start()를 사용하는 것이 좋습니까?session_start()의 리소스 사용

방문 할 때마다 세션을 시작하는 것이 좋거나 나쁘거나 중립적입니까?

답변

1

예, session_start()는 리소스를 사용합니다. 그러나 사이트에 엄청난 양의 트래픽이 발생하지 않는 한 눈치 채지 못할 수 있습니다. 그리고 세션 데이터를 저장하는 다른 방법은 거의 구현하기가 훨씬 어려우며 흥미로운 오류 모드가있는 경향이 있습니다.

내가 권하는 유일한 것은 세션에 넣는 것에 조심해야한다는 것입니다. 엄청난 양의 데이터는 트래픽 수준이 낮을지라도 눈에 띄는 영향을 미칩니다. 일반적인 실수는 실수로 비즈니스 로직 계층의 전체 개체 트리를 세션 상태로로드하는 것입니다.

예를 들어 장바구니를 만들고 있다고 가정합니다. 고객이 "바구니에 추가"를 클릭하면 추가 한 항목을 기억하고 싶습니다. 따라서 세션에 항목의 고유 ID를 추가 할 수 있지만 바구니를 표시 할 때마다 가격과 설명을 찾아 봐야합니다. 이는 고통입니다. 따라서 항목을 나타내는 객체를 세션에로드하기로 결정했습니다. 이 객체에는 가격 및 설명뿐 아니라 항목의 범주 및 해당 범주의 다른 모든 항목이 포함됩니다. 응용 프로그램이 지연로드를 사용하지 않기 때문입니다. 이제는 쇼핑 바구니의 각 항목에 수백 또는 수천 개의 다른 개체가 포함되어 있습니다. 그리고 당신이 어디에 있는지 알지 못하기 전에 전체 데이터베이스를 거의 세션에로드했습니다.

+0

소비하는 리소스의 양을 측정하는 방법이 있습니까? 나는 단지 나의 사이트에 대한 견적을 갖고 싶다. – Googlebot

+0

http://stackoverflow.com/questions/1075419/how-to-find-memory-used-by-an-object-in-php-sizeof - 편집 된 답변을 통해 안티 패턴의 예를 보여줍니다. –

+0

정기적으로 memory_get_usage()를 사용하여 스크립트 사용량을 추정합니다. 그러나 session_start()에 관해서는, 나는 동시 사용의 수가 많으면 무엇인가가 달라야한다고 생각했다. – Googlebot

2

일반적으로 웹 사이트가 크롤링되기 시작할 때까지 최적화에 대해 걱정하지 마십시오.

모든 페이지에서 session_start()를 사용하면 전혀 유해하지 않습니다. 실제로는 인증을 사용하는 웹 사이트의 꽤 표준입니다.

관련 문제