1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| public $Randomnotify = array( array('appid'=>'appid1','key'=>'key1'), array('appid'=>'appid2','key'=>'key2'), array('appid'=>'appid3','key'=>'key3'), ... ); public function dataPollingInterval($list,$polling_time='1m',$polling_number=1) { // 规划轮询间隔时间的参数: $interval = false; // 判断$polling_time 的类型是 秒、分、小时、天 中的哪1种。 $arg = array( 's'=>1, // 秒 'm'=>60, // 分= 60 sec 'h' =>3600, // 时= 3600 sec 'd' => 86400, // 天= 86400 sec );
// 判断间隔时间的类型,并计算间隔时间 foreach ($arg as $k => $v) { if (false!== stripos($polling_time,$k)) { $interval = intval($polling_time)*$v; break; } } // 判断间隔时间 if(!is_int($interval)){ return false; } // 从今年开始的秒数 $this_year_begin_second = strtotime(date('Y-01-01 01:00:01', time())); // 当前秒数 - 今年开始的秒数,得到今年到目前为止的秒数。 $polling_time = time()-$this_year_begin_second; // 从今年到目前为止的秒数,计算得到当前轮数 $len = count($list); // 总长度 $start_index = intval($polling_time/$interval); $start_index = $polling_number*$start_index%$len; // 轮排数量 * 轮数 , 取余 总数量。 $res = array(); // 将轮数 指向到数组的索引,然后从这个索引开始接着往下循环遍历。 for ($i=0; $i<$len; ++$i) { $index=$i+$start_index; // 索引的变化是根据时间来变 if ($index>=$len) { $index=$index-$len ; } $res[]=$list[$index]; // 存入结果 } return $res[0]; }
|