这里使用单实例Linux Server 的Cron服务进行CT任务管理,当然你也可以自己集成到自己的系统中.
crontab 使用请自行查阅资料
<?php
class Crontab {
/**
* 字符转数组
* @param string $jobs
* @return array
* @exception
*/
private static function stringToArray($jobs = '') {
$array = explode("\r\n", trim($jobs));
foreach ($array as $key => $item) {
if ($item == '') {
unset($array[ $key ]);
}
}
return $array;
}
/**
* 数组转字符
* @param array $jobs
* @return string
* @exception
*/
private static function arrayToString($jobs = array()) {
$string = implode("\r\n", $jobs);
return $string;
}
/**
* 返回一个现有的/当前的cron作业数组。 每个数组项是一个字符串(cron作业)。
* @return array
* @exception
*/
public static function getJobs() {
$output = shell_exec('crontab -l');
return self::stringToArray($output);
}
/**
* 将cron作业的$ jobs数组保存到crontab中,以便服务器运行它们。 crontab中的所有现有作业都将被删除。
* @param array $jobs
* @return string
* @exception
*/
public static function saveJobs($jobs = array()) {
$output = shell_exec('echo "' . self::arrayToString($jobs) . '" | crontab -');
return $output;
}
/**
* 检查crontab中是否存在特定的作业。
* @param string $job
* @return bool
* @exception
*/
public static function doesJobExist($job = '') {
$jobs = self::getJobs();
if (in_array($job, $jobs)) {
return true;
} else {
return false;
}
}
/**
* 将一个cron作业添加到crontab。
* @param string $job
* @return bool|string
* @exception
*/
public static function addJob($job = '') {
if (self::doesJobExist($job)) {
return false;
} else {
$jobs = self::getJobs();
$jobs[] = $job;
return self::saveJobs($jobs);
}
}
/**
* 从crontab中删除一个cron作业。
* @param string $job
* @return bool|string
* @exception
*/
public static function removeJob($job = '') {
if (self::doesJobExist($job)) {
$jobs = self::getJobs();
unset($jobs[ array_search($job, $jobs) ]);
return self::saveJobs($jobs);
} else {
return false;
}
}
}
网友评论