pop(); if(!$info){ echo "no more message".PHP_EOL; sleep(1); continue; } if(!$info['LicensePlate']){ echo "LicensePlate empty!".PHP_EOL; continue; } if(!$info['ExpireTime']){ echo "ExpireTime empty!".PHP_EOL; continue; } //过期的预约车牌 if(time()>$info['ExpireTime']){ //检测车牌是否已生成待开户订单,已生成的丢弃,未生成释放到公选池 $cond = array( 'LicensePlate' => $info['LicensePlate'], 'OrderStatus' => C('订单状态_待开户') ); $order_info = M('jms_order')->where($cond)->field('LicensePlate,OrderStatus')->find(); if(!$order_info){ $cond = array( 'LicensePlate' => $info['LicensePlate'], 'OrderStatus' => C('订单状态_已开户') ); $order_info = M('jms_order')->where($cond)->field('LicensePlate,OrderStatus')->find(); } if($order_info && $order_info['OrderStatus'] == C('订单状态_待开户')){ echo 'LicensePlate: '.$info['LicensePlate'].' has waiting order,discard!'.PHP_EOL; continue; } if($order_info && $order_info['OrderStatus'] == C('订单状态_已开户')){ echo 'LicensePlate: '.$info['LicensePlate'].' has finish order,discard!'.PHP_EOL; continue; } //过期的预约车牌,释放到公选池 $result = $plate_preselect_pool -> add($info['LicensePlate']); if(!$result){ echo 'LicensePlate: '.$info['LicensePlate'].' push to plate_preselect_pool failed!'.PHP_EOL; continue; } echo 'LicensePlate: '.$info['LicensePlate'].' timeout, push to plate_preselect_pool'.PHP_EOL; continue; } //没有过期的,放回队列 $result = $preselect_plate_queue -> add($info); if(!$result){ echo 'info push to preselect_plate_queue failed!'.json_encode($info).PHP_EOL; } usleep(10000); }while(time()-$start<60); /* $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); $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 == NULL){ $time = time() - (C('EXPIREIN')*60); if($time > $data['Timestamp']){ $result = $redis->sAdd('plate_preselect_pool' , $key); if(!$result){ json_fail('释放过期车牌失败'); } } } if($orderstatus == 2){ $p = Redis("wjw_plate","hash"); $res = $p->where($key)->delete(); if(!$res){ json_fail('删除过期车牌失败'); } $result = $redis->sAdd('plate_preselect_pool' , $key); if(!$result){ json_fail('释放过期车牌失败'); } } if($orderstatus == 1){ $p = Redis("wjw_plate","hash"); $res = $p->where($key)->delete(); if(!$res){ json_fail('删除已开户车牌失败'); } } } json_success('执行完毕'); */ } }