2009-09-06 3 views
10

내 세션이 너무 큰지 잘 모릅니다. 세션의 크기를 볼 수있는 방법이 있습니까? 직렬화 핸들러가 세션을 serialize하는 데 사용 하지, 그러나 그것은 또한 너무 멀리 떨어져되지 않습니다으로 감사합니다, 라훌SESSION의 크기를 표시 할 수 있습니까?

답변

16
$size_of_session_estimate = strlen(serialize($_SESSION)); 

지금, 이것은 단지 추정치이다.

말하자면, 세션에 어리석은 양의 데이터를 저장하지 않는다면 아마 걱정할 필요가 없을 것입니다.

+0

일에 장소, *와 * 매우 빠른 :와 디스크에 저장된

기본 아파치 설정에

, 당신은 세션 데이터를 볼 수 있습니다. – karim79

+0

저는 궁금 해서요, 세션의 크기 제한이 당신의 기억에 기반을 두었다고 생각합니다. 다른 요소가 있습니까? 사용자 세션에 엄청난 양의 데이터를 저장했기 때문에 묻습니다. – JasonDavis

+0

strlen이 문자 수를 제공하기 때문에이 코드가 작동한다고 가정합니다. 그리고 각 문자는 1kb입니다. 만약 내가 틀렸다면 정정 해주세요. – Rahul

8

Apache를 사용하는 경우 APACHE_ROOT/tmp 폴더를 살펴보고 sess_***********이라는 파일을 찾으십시오.

그렇지 않으면 here에서 스크립트를 가져오고 array_size($_SESSION)을 사용하여 호출하십시오. 이것은 (PHP 모듈에 의해 수행 된 압축/최적화에 따라) 정확한 값과 약간 다를 수 있습니다.

+0

일부 구성은/tmp 이외의 장소에 세션을 저장할 수 있습니다. PHP 구성을 검사해야합니다. – Charles

+2

paste-it.net is offline, 당신의 스크립트에 대한 대안 링크가 있습니까? – rubo77

4

이 :

echo strlen(session_encode()); 

) 당신에게 session_encode (이후, (session.save_handler를 기본값을 파일입니다 가정) $ _SESSION 사용하는 디스크 공간의 양을 줄 것이다이 문자열을 반환 세션 파일에 저장된 문자열과 동일합니다.

는 또한는 직렬화() 미만 메타 데이터를 추가() session_encode 때문에, 사용하는 메모리 양의 더 나은 표시를 제공한다.

session_write_close(); 
echo file_get_contents(sys_get_temp_dir() . 'sess_' . session_id()); 
+1

"수락 된 대답이어야합니다" –

관련 문제