m3cron ver 0.92 - 하루 1회 php파일 실행 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

m3cron ver 0.92 - 하루 1회 php파일 실행 정보

m3cron ver 0.92 - 하루 1회 php파일 실행

첨부파일

m3cron_utf8.zip (1.3K) 63회 다운로드 2009-05-24 21:37:26
m3cron_euckr.zip (1.3K) 47회 다운로드 2009-05-24 21:37:26

본문

새 버전이 나왔습니다~

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
리눅스의 crontab처럼 매월, 매주, 매일 1회 특정 폴더 내의 php파일을 정기적으로 실행하도록 해줍니다.
압축파일 안의 폴더 2개를 $g4[path]에다가 복사하시면 됩니다.
(extend 폴더에 m3cron.extend.php를 복사하고, $g4[path]/m3cron/monthly, $g4[path]/m3cron/weekly, $g4[path]/m3cron/daily 폴더 3개를 생성하는 것과 같습니다.)

"사용자 설정" 부분에 기본적으로 매월 01일, 매주 일요일에 규칙적으로 실행하도록 되어있는 것을 필요에 따라 수정하실 수 있습니다. (한달에 한번, 일주일에 한번)
하루에 한 번 실행시킬 코드나 매주 포인트 통계를 내는 등의 코드를 페이지를 띄울 때마다 실행시키지 않고, 원하는 타이밍에 실행시킴으로써 서버 부담을 줄일 수 있을 것 같네요.

참고 :
 - 월, 주, 일이 한꺼번이 바뀌었다면 실행되는 순서는 monthly -> weekly -> daily 입니다.
 - 하루에 한명도 방문하지 않는 홈페이지라면 정상작동하지 않을 수 있습니다.

추천
2

댓글 5개

웹게임에서 랭킹부분에 적용하면 좋을듯 하네요. 실시간으로 갱신 하다보니 트래픽이 안남아 돌았는데 감사 드립니다.
여러 모로 활용도가 좋을 거라고 기대하고 있습니다.
제 사이트에서도 글 순위를 매기는 데 사용하고 있고요..
사용하시다가 버그 발견하시면 다른 회원님들을 위해서라도 알려주시면 감사하겠습니다.^^
소스를 보면 각 폴더안의 php스크립트를 실행하는 것이 아니라 /extend폴더만 읽어들이도록 되어 있습니다. 수정이 필요하겠네요. 그리고 반복되는 부분은 함수를 만들어 행하게 한다면 더욱 소스가 간결하게 될 것 같네요. 다음과 같이 수정해 보았습니다.

<?
// m3cron ver 0.90
// a plugin for GNU board 4.31.02
// 리눅스의 크론처럼 매월, 매주, 매일 1회 폴더 내의 php파일을 실행합니다.
// 1) copy this file into $g4[path]/extend
// 2) 다음 폴더 3개를 생성해주세요.
//  - 매월 실행: $g4[path]/m3cron/monthly
//  - 매주 실행: $g4[path]/m3cron/weekly
//  - 매일 실행: $g4[path]/m3cron/daily
// please give feedbacks to http://bomool.net

// 사용자 설정
$m3_cron[set_m] = "01"; // 매월 1일에 실행 (01~28 와 같이 2자리 수로 표기)
$m3_cron[set_w] = "Sun"; // 매주 일요일에 실행 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)

// 설정
$m3_cron[path] = "$g4[path]/m3cron";
$m3_cron[ymd] = date("Y-m-d");
$m3_cron[m] = date("m");
$m3_cron[w] = date("D");
$m3_cron[d] = date("d");
$m3_cron[ori_ymd] = $config[cf_5];
$m3_cron[ori_m] = substr($m3_cron[ori_ymd], 5, 2);
$m3_cron[ori_w] = date("D", strtotime($m3_cron[ori_ymd]));
$m3_cron[ori_d] = substr($m3_cron[ori_ymd], -2);

function m3_cron_cmd($type)
{
global $m3_cron;

$path = "$m3_cron[path]/$type";
if (is_dir($path)) {
// php 파일 include
$dir = dir($path);
while ($entry = $dir->read() && preg_match('/\.php$/i', $entry)) {
include_once("$path/$entry");
}
}
}

// 오늘이 아니면 날짜 업데이트 해놓고 이하 실행
if($m3_cron[ori_ymd] != $m3_cron[ymd]) {
sql_query("update `$g4[config_table]` set cf_5='$m3_cron[ymd]' limit 1");

// 폴더 확인
if(is_dir($m3_cron[path]))
{
// 한 달의 정해진 날짜이면 monthly 폴더 실행
if($m3_cron[set_m] == $m3_cron[d]) {
m3_cron_cmd('monthly');
}

// 오늘이 아닌데 정해진 요일이라면 weekly 폴더 실행
if($m3_cron[set_w] == $m3_cron[w]) {
m3_cron_cmd('weekly');
}

// daily 폴더 실행
m3_cron_cmd('daily');
}
}

?>
전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT