public function is_holiday(){
//取出系统配置
if(Redis::exists('sysconfig')){
$sysconfig = json_decode(Redis::get('sysconfig'),true);
}else{
$sysconfig = Sysconfig::find(1);
Redis::setex('sysconfig',600,json_encode($sysconfig));
}
//判断是否是节假日
if(isset($sysconfig['holiday_control'])){
//数据库字段 holiday_control 0-默认根据国家法定节假日,1-手动控制为节假日,2-手动控制为工作日
if($sysconfig['holiday_control'] == 0){
//取出缓存中本月的节假日列表
if(Redis::exists('holiday_list')){
$holiday_list = json_decode(Redis::get('holiday_list'),true);
//判断今日是否是节假日
if(in_array(date('d'),$holiday_list)){
$is_weekend = true;//是节假日
}else{
$is_weekend = false;
}
}else{
//用API获取本月所有的节假日
$url = "http://www.easybots.cn/api/holiday.php?m=".date('Ym');
$file = file_get_contents($url);
$json = json_decode($file,true);
//处理节假日数据并缓存到Redis
$holiday_list = array();
foreach($json as $value){
foreach($value as $key => $val){
if($val != 0){
$holiday_list[] = $key;
}
}
}
//计算Redis过期时间
$begin_time = time();
$end_time = mktime(23,59,59,date('m'),date('t'),date('Y'));
//缓存到Redis
Redis::setex('holiday_list',$end_time-$begin_time,json_encode($holiday_list));
//进行判断是否是节假日
if(in_array(date('d'),$holiday_list)){
$is_weekend = true;//是节假日
}else{
$is_weekend = false;
}
}
}elseif($sysconfig['holiday_control'] == 1){
//如果 holiday_control 不为0,就是手动控制节假日,1是节假日,2是工作日
$is_weekend = true;//是节假日
}else{
$is_weekend = false;
}
}else{
//如果数据库不存在节假日控制字段,便使用最原始的判断是否周末控制
if(date('w') == 6 or date('w') == 0){
$is_weekend = true;//是周末
}else{
$is_weekend = false;
}
}
return $is_weekend;
}
版权声明:本文为qvanminpiao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。