꼭 있어야 하는 기능도 아닌데 그냥 호기심에 한번 사이트에 적용해 봤습니다.

 

 

이 작업을 위해 사이트 방문자수를 추가로 카운트하거나 불러오는 것보다 기존에 어차피 수집하고 있는 카운터위젯에 코드를 추가해서 특정 오늘 방문자에서 푸시가 가도록 해 보았습니다.

 

  • 푸시를 보내기위해 항상 뭔가를 하지 않고 특정 방문자 숫자에서만 작동 하는 것에 가깝게 한다.,
  • 사이트에서 캐시를 사용하기에 특정한 숫자를 지정하면 해당 카운트를 감지 하지 못하게 되어 특정 방문자수 범위에서 동작하게 한다.
  • 특정 범위를 가지게 되니 푸시가 발송된 후 이후에는 푸시가 나가지 않도록 해야 한다.

 

위 세가지 정도가 고려해야 할 사항이었습니다.

 

 

 

제가 사용하는 카운터위젯의 오늘 방문자를 카운팅하는 부분 바로 아래에 코드를 추가했습니다.

 

// 전체, 어제, 오늘 접속 현황을 가져옴
            $oCounterModel = &getModel('counter');

            $site_module_info = Context::get('site_module_info');
            $output = $oCounterModel->getStatus(array('00000000', date('Ymd', time()-60*60*24), date('Ymd')), $site_module_info->site_srl);
            foreach($output as $key => $val) {
                if(!$key) Context::set('total_counter', $val);
                elseif($key == date("Ymd")) Context::set('today_counter', $val);
                else Context::set('yesterday_counter', $val);
            }

 

-------  위 내용이 기존 위젯의 코드 입니다.  -------

 

// 지정 방문수 도달시 관리자에게 푸시
            $today_counter1 = Context::get('today_counter');
            if($today_counter1->unique_visitor >= 1000 && $today_counter1->unique_visitor < 1050)
            {
            $obj = new stdClass();
            $obj->target_browser = '방문자수 알림';
            $obj->push_date = date('Ymd000000');
            $output = executeQuery('widgets.counter_status.getAdminPushList', $obj);
            if($output->data->count < 1)
            {
             관리자에게 푸시 발송 코드  https://xepushapp.com/board_BwHe40/10838
            }
            }

 

 

관리자에게 푸시 발송코드가 동작하는 조건을 바로 위에 푸시앱모듈의 푸시결과값 db에서 "방문자수 알림" 이라는 모듈명으로 발송된 푸시가 오늘 있다면 발송이 되지 않도록 했습니다.

 

간단한 쿼리이긴 하지만 체크하고 싶은 방문자수 범위 안에서만 동작합니다. 쿼리요청을 항상 하지 않도록 한거죠.

푸시발송작업 후 특정한 파일을 어딘가에 생성하고 그 파일이 없을때만 푸시를 보내는 것으로 하면 좋은데 그렇게 하지는 못했네요. 

 

 

 

아래 내용이 실제 위젯에 추가된 전체 내용입니다.

 

// 지정 방문수 도달시 관리자에게 푸시
$today_counter1 = Context::get('today_counter');
if($today_counter1->unique_visitor >= 1000 && $today_counter1->unique_visitor < 1050)
{
$obj = new stdClass();
$obj->target_browser = '방문자수 알림';
$obj->push_date = date('Ymd000000');
$output = executeQuery('widgets.counter_status.getAdminPushList', $obj);
if($output->data->count < 1)
{
$oAndroidpushappModel = getModel('androidpushapp');
$obj = new stdClass();
$obj->module_name = '방문자수 알림';
$obj->member_srls = array(125482);
$obj->title = '방문자수 도달 알림';
$obj->content = "방문자 숫자가 " . $today_counter1->unique_visitor . " 에 도달하였습니다.";
$obj->address = 'https://abc.com';
$obj->ticker = '방문자수 도달 알림';
$obj->bottom_text = "방문자 숫자가 " . $today_counter1->unique_visitor . " 에 도달하였습니다.";
$obj->nick_name = '카운트알림봇';

$obj->sender_srl = 888;
$obj->async = 'true';
$obj->notify = "ture";
$obj->pushstyle = "big_text";
$obj->src = "none";
$obj->profile = "false";
$obj->profile_link = "none";
$obj->banner = "false";
$obj->must = "false";
$returnValue = $oAndroidpushappModel->quick_send($obj);
}
}

 

 

 

 

웹지기

profile
10년을 다루다 보니 이제 간단한 것도 만들고 커뮤니티 운영에 관한 다양한 노하우가 있습니다. 어려운 점이나 가지신 생각을 함께 소통해 보아요.
https://rxtip.kr/ 라이믹스 꿀팁
  • ?
    개인적인 용무로 바쁠때는 좋을것 같아요
    저는 항상 그냥 보는 편이라서 ...
  • profile
    본문에 빼먹고 안적은게 있네요. 푸시발송여부를 확인하기 위한 쿼리파일은 하나 만들어서 위젯에 추가해 주었습니다.
  • profile
    아참, 그리고 한가지 더 ...
    $args 이것을 사용하니 기존코드에 영향을 주는지 카운트 출력에 문제가 생겨서 $obj를 사용했습니다.