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();

마치며


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





이현석

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