Laraval Visits, 조회수를 처리해주는 패키지 free

2019-07-24

애플리케이션을 만들 때 빠지지 않고 만드는 기능 중 하나가 조회수 기능 것이다. 이를 쉽고 편하게 할 수 있는 패키지를 소개한다.


과거를 돌이켜보면 어떤 게시물의 조회수를 관리하기 위해 모델의 테이블에 view 같은 컬럼을 추가해서 사용자가 조회할 때마다 카운트를 올렸던 거 같다. 조회수가 중요한 경우에는 조회수만 관리하는 테이블을 따로 두고 관리하기도 했다.


Laraval Visits는 조회수와 관련된 들을 처리해주는 패키지로 다음의 기능을 제공한다.



  • 모델은 태그를 이용해서 여러가지 타입의 방문 기록을 가질 수 있다.

  • 유저 모델만 허용하는 패키지도 있는데, 이 패키지는 어떤 모델에든 적용할 수 있다.

  • IP 기반으로 방문자 기반으로 기록할 수 있다.

  • 모델별로 최다/최저 방문 아이템 조회

  • 가장 많이 방문한 국가를 알 수 있다.

  • 모델이나 아이템의 특정 기간별 조회수를 알 수 있다.


사용법


Laraval Visits은 레디스를 사용한다. 그래서 따로 데이터베이스 마이그레이션은 필요 없다. 다만 레디스 관련 설정은 필요하다. 설치 및 설정 방법은 공 저장소의 설명을 참고하자.


Laraval Visits를 사용할 때는 visits() 헬퍼를 사용한다.


visits($model)->{method}()

다음과 같은 메서드를 지원한다.



  • increment: 조회수를 증가시킨다.

  • decrement: 조회수를 감소시킨다.

  • seconds: x초간 중복 방문 방지(IP 기반).

  • foreceIncrement: 강제로 조회수 증가.

  • forceDecrement: 강제로 조회수 감소.

  • count: 조회수 조회.

  • period: 조회수 조회 기간 설정.

    • minute

    • hour

    • xhours [1 ~ 12]

    • day

    • week

    • month

    • year

    • quarter

    • decade

    • century



  • reset: 조회수 지움.


엘로퀀트 모델에 통합해서 사용하는 방법은 다음과 같다. 아래 처럼 엘로퀀트 모델에 visits 메서드를 추가하면


public function visits()
{
return visits($this);
}

아래처럼 사용할 수 있다.


$post = Post::find(1);
$post->visits()->increment();
$post->visits()->count();

마치며


레디스에 데이터를 저장하기 때문에 어떻게 영구적으로 저장할 수 있을지에 대한 고민이 추가로 필요하다. 정기적으로 데이터베이스로 백업하는 기능까지 있었으면 더 좋지 않았을까 싶다.




유료 구독자 전용 레터입니다.

한 달 1만원으로 매일 라라벨 관련 메일 받아보시고 과거 메일도 열람하세요. 일반 구독으로 공개글만 받아보실 수도 있습니다.

구독하기 버튼을 눌러주시면 구독과 동시에 xly에도 가입됩니다.

이현석

바쁜 팀장님 대신 알려주는 신입 PHP 개발자 안내서를 쓰고, 클린 아키텍처 인 PHP를 번역했습니다. 2020년에 출간될 Laravel Up & Running 2nd Edition을 번역하고 있습니다.