목표 우분투 리눅스 클라우드 서버에서 crontab을 사용하여 php 파일을 실행시킨다. php파일에는 mysql에 접근하는 코드를 작성한다.
linux 콘솔 창에서 crontab -e 명령 입력하면 아래와 같이 주석이 쭉 나오고 # m h dom mon dow command 주석이 마지막으로 나온다.
m은 분, minute (0-59)
h는 시,hour (0-23)
dom은 날짜, day of month (1-31)
mon은 달, month (1-12)
dow는 요일, day of week (0-7) 0일요일 1월요일...6토요일 7일요일
아래에 0 12 * * *의 의미는 0분, 12시, 모든 날짜, 모든 달, 모든 요일마다 실행하겠다는 의미이다.
만약 1분마다 계속 실행하게 하려면 * * * * *이다.
명령 하나마다 한 줄에 입력해야 한다.
0 12 * * * php /var/insertDate.php는 매일 12시가 되면 /var 폴더에 있는 insertDate.php라는 php 파일을 실행시키겠다는 의미다.
include를 사용하여 외부 파일을 참조한다.
session.php 파일에는 단순히 <?php session_start()?> 함수만 있다. 세션 시작은 위해서.
dbConnect.php 파일엔 다음과 같은 코드가 있다. mysql DB 연동을 위해서.
1 2 3 4 5 6 7 8 | <?php header("Access-Control-Allow-Origin: *"); $dbConnect = mysqli_connect('localhost','id','pw','dbname'); if(mysqli_connect_error()){ echo "연결 실패: ". mysqli_connect_error(); } mysqli_select_db($dbConnect, "dbname"); ?> | cs |
매일매일 날짜를 추가해주기 위해서 mysql DB에는 이미 테이블이 만들어져 있다.
id는 auto_increment. date date 이런 식이다.
오늘 날짜를 dates라는 테이블에 삽입하려면 insert into dates(date) value(curdate());
$dbConnect->query()를 이용해 원하는 sql query문을 실행한다.
그리고 최신 날짜에 해당하는 id를 가져오려면 가장 마지막에 있는 날짜를 택하면 되므로 단순하게 date_id가 max인 것을 고른다.
다른 곳에서 날짜 id에 관한 데이터를 필요로 하므로 $_SESSION으로 출력된 date_id값을 세션에 저장한다.
오늘 날짜는 2018.09.08이다. 테스트 하느라 여러번 삽입되었다.
위와 같은 설정을 마치면 하루가 지날 때마다 dates테이블에 새로운 record가 삽입된다.
PS 사실 리눅스 서버의 표준 시간이 좀 이상했다. 그래서
crontab -e 입력 후 TZ=KST를 0 12 * * * ... 명령어 바로 윗 줄에 추가해줬다. 잘 동작한다.
'과목 > Linux 리눅스' 카테고리의 다른 글
Linux cron 리눅스 반복 예약 작업 (0) | 2018.06.04 |
---|---|
리눅스 명령어 모음 (0) | 2018.04.22 |
리눅스 서버에서 DB에 값 넘겨주기 (0) | 2018.02.22 |
Could not get lock /var/lib/dpkg/lock (0) | 2018.02.22 |
VNC console에서 키보드 안먹힐 때 다른 방법. (0) | 2018.02.22 |