2012-09-11 1 views
1

나는 oldnavy.ca에서 한 페이지짜리 체크 아웃 시스템을 찾으려고합니다.세션 변수를 사용하는 경우에만 영구 데이터를 얻을 수 있습니까?

장바구니에 물건을 던져 버리고 시간을내어 주위를 어지럽게 볼 수 있다면 크게 감사하겠습니다.

나를 혼란스럽게하는 것은 페이지를 새로 고치면 프로세스의 현재 상태가 저장된다는 것입니다. 따라서 로그인 이름을 작성하고 배송지 주소를 추가하면 새로 고침하면 도착할 것입니다.

많은 데이터를 저장하기 위해 세션 변수를 사용하는 것처럼 들리는 많은 기사는 좋은 프로그래밍으로 간주되지 않습니다. 이제 배송 정보 등의 양식 데이터를 저장하고 있습니까? 데이터의 "많은"것으로 간주됩니까?

나는이 카트 시스템을 어떻게 구현했는지 알고 싶어합니다. 왜냐하면 모든 곳에서 사용되기 때문에 세션 변수를 사용하는 것을 꺼려하고 싶지 않기 때문입니다.

대체 방법이 사용 중이십니까?

감사합니다.

+0

그들은 반드시 세션의 모든 것을 저장하고있는 것은 아닙니다. 고유 한 ID를 저장하고 대신 모든 것을 데이터베이스에 추가 할 수 있습니다. 실제로 어떻게 처리하는지에 대한 실제적인 방법은 없습니다. 최종 사용자의 관점에서 볼 때도 마찬가지입니다. – andrewsi

+0

은 데이터베이스에 직접 저장하는 것이 더 효율적입니까? 세션이 만료되면 데이터베이스에서 데이터를 제거해야합니다. – Adam

+0

그 일을하는 사람들은 정기적으로 실행되고 잠시 동안 업데이트되지 않은 세션을 정리할 것입니다. 디스크 공간이 저렴하고 한밤중에 일괄 작업을 실행하는 것은 불가능합니다. 대부분의 사용자가 알아 챘습니다. – andrewsi

답변

0

여기에 대한 설명은 없으며 지침 만 있습니다.

표준 PHP 세션을 사용하는 경우 활성 세션 당 하나씩 서버의 디스크에 일반 파일로 저장됩니다. 이는 각 페이지로드시에 관련 세션 파일이 디스크에서 메모리로 읽히는 것을 의미합니다. "너무 많이"얼마나 많은가에 따라 달라집니다 ...

  • 디스크에서 파일을 메모리로 읽는 데 얼마나 걸리나요?
  • 디스크 캐싱을 사용하면 매번 실제 디스크에 액세스 할 수 없지만 파일이 클수록 디스크 캐시에 저장되는 데이터가 더 적습니다.
  • RAM에서 차지하는 메모리는 얼마입니까?
  • 데이터를 직렬화하고 디스크에 다시 쓰려면 얼마나 걸리나요?
  • PHP를 항상 읽고 쓸 수있는 동시 사용자 수는 몇 명입니까?
  • 세션은 얼마나 오래 활성 상태입니까? 즉, 가비지 수집되기 전에 디스크 주변에 몇 개의 세션 파일이 흩어져 있습니까?

일반적인 소형 웹 쇼핑몰 (Amazon 크기가 아님)의 경우 파일 기반 세션은 일반적으로 완벽하게 괜찮습니다. 아마도 각 파일에 최대 수십 킬로바이트를 저장할 것이고 이는 사용자의 주소 데이터와 쇼핑 바구니를 보관할 수 있습니다. 이 문제는 거의 발생하지 않습니다.

다른 세션 처리기가 있습니다. Memcache 저장소 나 데이터베이스에 보관하여 파일 기반 문제를 해결할 수 있습니다. 자신의 상황에 맞는 솔루션을 평가하십시오.

+0

그래서 세션 ID를 저장하고 데이터베이스에 모든 관련 데이터를 저장하는 방법이 있습니까? 내가 가진 다음 질문은 세션이 만료 될 때 어떻게 데이터를 제거하겠습니까? 내 장바구니는 소량이므로 세션이 더 쉬울 수도 있습니다. – Adam

+0

세션은 고유 한 ID를 가진 쿠키이고 해당 ID와 연결된 어딘가에 데이터를 저장하는 * 일부 서버 측 메커니즘입니다. 파일 기반이 아닌 세션 저장소를 사용하려면 [save_handler'] (http://php.net/manual/en/session.configuration.php#ini.session.save-handler)를보십시오. 데이터 제거는 선택한 세션 처리기의 가비지 수집주기의 일부입니다. – deceze

관련 문제