2010-01-12 4 views
0

원래 등록 된 사용자에게 액세스 권한을 부여하도록 설계된 것처럼 보이는 사이트를 상속 한 다음 특정 제한 기능을 제외하고 공개 액세스를 원한다고 결정했습니다. 액세스 제어는 괜찮은 편이지만, 내 마음을 깜짝 놀라게하는 것은 누구나 각 순 방문자에 대해 데이터베이스에 항목을 추가하는 이유입니다.php cookies, sessions, mysql

쿠키 및 세션의 존재와 존재하지 않는 경우 인증 코드 검사는 제한된 사용자 계정을 생성하고 다음과 같은 쿠키 설정 :

$session = md5(time() . "sitename" . $_SERVER['REMOTE_ADDR']); setcookie("sitename",$session, time()+ 14 * 24 * 3600, "/",".sitename.com"); mysql_query("INSERT user(session,permissions) VALUES ($session, $permissions)"); $this->ActiveUser = mysql_insert_id();

는 서버의 cron 작업있다을 야간에 이러한 세션을 정리하고 auto_increment 값을 마지막으로 등록 된 사용자 ID + 1로 재설정하도록 설정합니다. 클린업 스크립트가 좋지만 트래픽 홍수 (고유 사용자)가 발생할 수있는 눈부신 디자인 결함을 무시하는 것처럼 보입니다 사용자 ID의 INT 값이 mysql의 최대 값 인 2147483647에 도달하도록하십시오. 사용자 ID를 큰 int로 업데이트하면 도움이되지만 오랫동안 (이론적으로) 만 가능합니다. 또한 마지막 등록 된 사용자와 그 날의 첫 번째 새로 등록 된 사용자 ID 사이에 50 명의 방문자가있는 경우 auto_increment 값을 절대로 재사용하지 않습니다.

이 사이트는 사용자가 어떤 항목을 보았는지, 장바구니에 올라 갔는지 그리고 계정으로 등록하여 해당 항목을 구입했는지에 대한 측정 항목을 방문자와 회원에게 제공하는 좋은보고 측정 항목을 제공합니다.

데이터베이스를 건드리지 않고 사용하지 않는 auto_increment 값을 만들지 않고도 방문자와 장바구니의 SESSION 변수를 사용하여 인증 기능을 다시 디자인 할 수 있다고 생각합니다. 단점은 사용자 지정보고가 느슨해지기 때문입니다.

명백히 트레이드 오프이지만, 나는 그것을 여기에 올리고 생각이 무엇인지 알 것입니다. 감사!

답변

3

2 억의 요청이 얼마나되는지 알고 계십니까? 초당 10 명의 순 방문자, 하루 24 시간의 수학 여행을하고 거기에 도달하는 데 걸리는 시간을 확인하십시오.

저는 지난 몇 년 동안 사용 빈도가 높은 회원 사이트를 운영 해왔고 원격으로 int4 기본 키가 너무 많이 흘러 나오지도 않았습니다.

내 생각에 이것은 문제가 아닙니다.