[함수] crontab 스케쥴링 함수 알고리즘 한번 만들어보았어요 - +
<?
var_dump(decode_crontab($argv[1], $argv[2]));
# 크론탭에 공식을 적용하여 배열로 돌려줍니다.
function decode_crontab($data, $column) {
if ($data != '*') {
$dataArr = explode(',', $data);
if (count($dataArr) > 1) {
foreach ($dataArr as $v1) {
$a = explode('/', $v1);
if (count($a) > 1) {
$b = explode('-', $a[0]);
for ($i=$b[0]; $i<=$b[1]; $i++) {
if ($i%$a[1] == 0) {
$i2 = str_pad($i, 2, '0', STR_PAD_LEFT);
$result[$i2] = $i2;
}
}
} else {
$b = explode('-', $v1);
if (count($b) > 1) {
for ($i=$b[0]; $i<=$b[1]; $i++) {
$i2 = str_pad($i, 2, '0', STR_PAD_LEFT);
$result[$i2] = $i2;
}
} else {
$v2 = str_pad($v1, 2, '0', STR_PAD_LEFT);
$result[$v2] = $v2;
}
}
}
} else {
$dataArr = explode('-', $data);
if (count($dataArr) > 1) {
$a = explode('/', $dataArr[1]);
if (count($a) > 1) {
for ($i=$dataArr[0]; $i<=$a[0]; $i++) {
if ($i%$a[1] == 0) {
$i2 = str_pad($i, 2, '0', STR_PAD_LEFT);
$result[$i2] = $i2;
}
}
} else {
for ($i=$dataArr[0]; $i<=$dataArr[1]; $i++) {
$i2 = str_pad($i, 2, '0', STR_PAD_LEFT);
$result[$i2] = $i2;
}
}
} else {
$dataArr = explode('/', $data);
if (count($dataArr) > 1) {
$columnArr = array('min', 'hour', 'day', 'month', 'week');
$maxValueArr = array(
'min' => array('s' => 0, 'e' => 59)
, 'hour' => array('s' => 0, 'e' => 23)
, 'day' => array('s' => 0, 'e' => 31)
, 'month' => array('s' => 1, 'e' => 12)
, 'week' => array('s' => 0, 'e' => 6)
);
for ($i = $maxValueArr[$column]['s']; $i <= $maxValueArr[$column]['e']; $i++) {
if ($i%$dataArr[1] == 0) {
$i2 = str_pad($i, 2, '0', STR_PAD_LEFT);
$result[$i2] = $i2;
}
}
} else {
$data2 = str_pad($data, 2, '0', STR_PAD_LEFT);
$result[$data2] = $data2;
}
}
}
} else {
$result[$data] = $data;
}
return $result;
}
?>
1. php 파일.php 1 min
2. php 파일.php 1-10 min
3. php 파일.php 1,2,3 min
4. php 파일.php 1-10/3 min
5. php 파일.php 1,2-10/2,15 min
조건은 if (! in_array('*', $result) AND ! in_array($this->today[$column], $result)) { 이런식 - +
쿄쿅 - +
스케쥴링중에 제일 개발자스럽고 편한것 같은데 소스가 없길래 혹시나 필요한분이 계시면 가져다 쓰시라고
올려놓아요 ~* 편히 갖다 쓰세요.
출처 phpschool
'개발-PHP' 카테고리의 다른 글
[함수] 한국 IP대역 체크 (0) | 2016.03.30 |
---|---|
[함수] ip range to cidr list (0) | 2016.03.30 |
[함수] [igbinary] php serialize 보다 나은 (0) | 2016.03.30 |
[함수] E_ALL 시 undefined variables 해결 함수 (0) | 2016.03.30 |
[함수] 라디오버튼, 체크박스, 셀렉트박스 쉽게 관리하기 (0) | 2016.03.30 |