오늘날짜 넣기 질문 드립니다
본문
현재 로그인 체크로 로그인할때마다 현재날짜를 mb_1에 저장중입니다.
근데 이렇게 하니 로그인을 안하면
현재날짜로 안되는 치명적(?)인 단점이 있어서 ...
회원모두 매일 오늘날짜로 업데이트 되도록 넣어주고 싶은데
하루 1회 mb_1에 오늘날짜가 업데이트 되어 들어갈수있도록 할수있는 방법 있을까요 ?
답변 3
[답변 수정 07-18 10:28:00]
extend 폴더에 member_today.extend.php 파일을 만들어 다음 코드를 넣어주세요
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$today = date('Y-m-d');
$sql_check = "SELECT COUNT(*) AS count FROM `{$g5['member_table']}` WHERE mb_1 = '$today'";
$result = sql_fetch($sql_check);
if($result['count'] !== 0){
return;
}
// 만약 값이 없다면 업데이트를 수행합니다.
if ($result['count'] == 0) {
// 모든 회원의 mb_1 필드를 업데이트하는 쿼리
$sql_update = "UPDATE `{$g5['member_table']}` SET mb_1 = '$today'";
sql_query($sql_update);
}
이렇게 되면 누군가 홈페이지 접속하게 되면, 쿼리를 실행합니다.
체크 방식은 오늘 날짜가 mb_1 에 저장값과 다르다면 오늘 날짜 그게 아니라면 실행하지 않습니다.
https://cron-job.org
무료 크론탭 사이트 입니다.
여기서 설정하시면 됩니다.
만약 내 사이트가 1.com 이면
1.com/cron.php 임의로 만들어서
해당 cron.php 파일에서 mb_1에 현재날자 넣는거 코드 짜시면 됩니다.
1.com/cron.php 파일을 저 위 사이트에서 1시간마다 또는 하루마다 등 설정해서
크론사이트에서 우리사이트 해당 파일로 접속을 하게합니다
보통 Linux crontab 또는 Windows Task Scheduler 와 같은
스케줄링 도구를 활용하는 방법이 많이 사용됩니다.
다른 방법으로는 꼭 하루1회일 필요가 없다면, 전체 업데이트 방법을 선택하지 않을수 있다면
발생된 로그인 유저에 대해서만 업데이트를 해주는 방법이 있는데
이는 실제 접근하는 유저만을 대상으로 하는 최소한의 DML 만 발생시키기 때문에
서버 운영 성능 향상에 도움이 됩니다.