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 版权协议,转载请附上原文出处链接和本声明。