2011-07-27 5 views
1

나는 Pligg CMS에 모듈을 만들어 사용자가 24 시간 내에 줄 수있는 투표 수를 제한하려고합니다. 그들이 한도 (40/day라고 말하자)를 넘기면 자바 스크립트 팝업이 나타나 "천천히!"라고 말합니다. Digg이 시스템을 어떻게 업데이트했는지와 비슷합니다.사용자가 24 시간 내에 줄 수있는 투표 수를 제한하는 방법?

일일 투표 기록을 유지하는 가장 좋은 방법은 무엇입니까? 한계를 지키고 있는지 확인하기 위해 투표를 할 때마다 MySQL 데이터베이스를 쿼리해야합니까? 또는 서버의 일부 유형의 실제 파일에 데이터를 저장하는 것이 현명합니까? 캐시 데이터를 작성하는 방법을 알지 못해 매번 투표의 수를 수동으로 확인하는 기능을 만들려고합니다. 물론 더 나은 제안을 듣고 싶습니다!

+1

하루에 예상되는 총 투표 수는 몇 번입니까? 초당 수백 개에 이르는 경우 단일 서버 MySQL 데이터베이스가이를 잘라 내지 못할 수도 있습니다. (동시성과 합리적인 저장 공간을 원한다면 실제 파일은 문제가되지 않습니다.) – bdares

+0

정확하게 확신 할 수 없습니다. 하지만 userbase는 약 400 명의 회원으로 전체 톤을 상상하지는 않습니다. 투표 수를 50-100 명 정도로 제한한다고 생각하여 상호 작용의 양을 제한 할 수있었습니다. – Jake

답변

4

데이터베이스를 사용하고 저장할 때 - 데이터베이스에 특정 기간의 득표 수를 쿼리하고 임계 값 미만인 경우 저장하십시오. 임계 값 이상인 경우 자바 스크립트 경고를 팝업으로 표시하여 사용자에게 문제를 알립니다.

+0

Brillaint! 전에 그렇게 해 줘서 고맙습니다. 아니면 프로그램 설계로 매우 지능적입니다. – Jake

0

volcme가 커질 지 추적하려면 memcached 또는 membase와 같은 확장 가능한 항목을 원할 수 있습니다. memcaced를 사용한다면 모든 투표가 memcached의 카운터를 업데이트하고 동시에 MySQL 통합 레코드로 롤업 할 로그 항목을 추가하도록 구현해야합니다. 이것의 좋은 점은, MySQL을 마스터 소스로 유지하여 어떤 속도로든 움직일 수 있다는 것입니다. 즉, 여러 가지 이유로 배제 된 경우에는별로 중요하지 않습니다. memcached 복사본을 업데이트하려고 할 때 memcache에없는 것으로 판단되면 MySQL에서 카운트를 가져오고 사용량이 40에 도달 할 때 팝업을 iomplement하기에 충분할만큼 99.99 %의 동기화 된 카운트를 가지지 않을 것입니다 투표.

그러나 시간당 투표 수가 적다면, 확장 기능을 캐싱하지 않고도 MySQL을 사용하고 싶을 수도 있습니다.

관련 문제