git преди 6 години
родител
ревизия
15ba7f55e4
променени са 1 файла, в които са добавени 35 реда и са изтрити 16 реда
  1. 35 16
      Home/Lib/Action/ApiAction.class.php

+ 35 - 16
Home/Lib/Action/ApiAction.class.php

@@ -68,7 +68,7 @@ class ApiAction extends Action {
 		//获取随机元素的一个集合
 		$list = $redis->sRandMember('plate_preselect_pool',20);
 		//var_dump($list);
-		echo 'sRandMember: '.(microtime(true)-$start)*1000 .' ms'.PHP_EOL;
+		//echo 'sRandMember: '.(microtime(true)-$start)*1000 .' ms'.PHP_EOL;
 		
 		return $list;
 	}
@@ -76,6 +76,7 @@ class ApiAction extends Action {
  
 	public  function token_verify( $appkey, $timestamp, $random, $token ){
 		$old_token = base64_encode(md5($appkey .  C('APPSECREAT') . $timestamp . $random));
+		//echo $old_token;exit;
 		if($old_token != $token){
 			json_fail('token无效!');
 		}
@@ -472,28 +473,46 @@ class ApiAction extends Action {
 	
  
 	public  function setOrderNumber(  ){
-		$order_id = rand(10000000,99999999); 
-		$res = M('jms_order')->where(array('OrderNumber'=>$order_id_main))->find();
-		if($res){
-			json_fail('订单号生成失败');
+		$i = 0;
+		while($i < 100){
+			$order_id = rand(10000000,99999999); 
+			$res = M('jms_order')->where(array('OrderNumber'=>$order_id_main))->find();
+			if(!$res){
+				return $order_id;
+			}
+			$i++;
 		}
-		return $order_id;
 		
 	}
 	
  
 	public  function releaseRedisExpiredLicenseplate(  ){
+		$config = parse_url(C('REDIS_DSN'));
+		$redis = new Redis();
+		$redis->connect($config["host"],$config["port"]?:6379);  
+		$redis->auth($config["pass"]?: ""); 
+		$redis->select(trim($config['path'],'//') ? : 0);
 		
-		$redis = Redis("wjw_plate","hash");
-		$all = $redis->tables('*');
-		
-		exit;
-		$it = NULL;
-		$pattern = '*';
-		$count = 50;  // 每次遍历50条,注意是遍历50条,遍历出来的50条key还要去匹配你的模式,所以并不等于就能够取出50条key
-		$keysArr = $redis->scan($it, $pattern, $count);
-		
-		var_dump($keysArr);
+		$all = $redis->hgetall('wjw_plate');
+		foreach($all as $key=>$val){
+			$data = json_decode($val,true);
+			$orderstatus = M('jms_order')->where(array('LicensePlate'=>$key))->getField('OrderStatus');
+			if($orderstatus == 1){
+				$time = time() - (C('EXPIREIN')*60);
+				if($time > $data['Timestamp']){
+					$p = Redis("wjw_plate","hash");
+					$res = $p->where($key)->delete();
+					if(!$res){
+						json_fain('删除过期车牌失败');
+					}
+					$result = $redis->sAdd('plate_preselect_pool' , $key);
+					if(!$result){
+						json_fain('释放过期车牌失败');
+					}
+				}
+			}
+		}
+		json_success('执行完毕');
 	}