Ejemplo n.º 1
0
 public function create_killsec_instance()
 {
     $db_activity = new DB('activity_killsec', 'killsec');
     $db_instance = new DB('activity_killsec_instance', 'killsec');
     //秒杀前10分钟生成实例
     $where = "status='" . self::STATUS_TRUE . "' and killsec_start_time >= '" . date('Y-m-d H:i:s', time()) . "' and killsec_start_time <= '" . date('Y-m-d H:i:s', time() + 10 * 60) . "'";
     $result = $db_activity->where($where)->select();
     //关闭已经过期的
     $date = date('Y-m-d H:i:s');
     $db_instance->where("close_time < '{$date}'")->data(array('status' => self::KILLSEC_STATUS_FINISH))->update();
     //生成活动实例
     if ($result) {
         foreach ($result as $k => $v) {
             //添加
             $exist = $db_instance->where("activity_id='{$v['activity_id']}' and status!=" . self::KILLSEC_STATUS_FINISH)->select();
             if (count($exist) == 0) {
                 $data = array();
                 $data['activity_id'] = $v['activity_id'];
                 $data['killsec_count'] = $v['killsec_count'];
                 $data['killsec_price'] = $v['killsec_price'];
                 $data['join_count'] = 0;
                 $data['start_time'] = $v['killsec_start_time'];
                 $data['close_time'] = $v['killsec_end_time'];
                 $data['create_time'] = date('Y-m-d H:i:s', time());
                 $data['status'] = self::KILLSEC_STATUS_PREVIEW;
                 $db_instance->data($data)->insert();
             } else {
                 //更新
                 $db_instance->where("activity_id='{$v['activity_id']}' and status!=" . self::KILLSEC_STATUS_FINISH)->data(array('close_time' => $v['killsec_end_time']))->update();
             }
         }
     }
     echo 'ok';
 }
Ejemplo n.º 2
0
Archivo: api.php Proyecto: lughong/shop
 public function create_activity()
 {
     $db = new DB('activity_killsec', 'killsec');
     $str = 'abcdefghijklmnopqrstuvsyz';
     $data = array();
     $data['name'] = substr(str_shuffle($str), 0, 6);
     $data['killsec_price'] = mt_rand(39, 139);
     $data['killsec_count'] = mt_rand(5, 10);
     $data['activity_start_time'] = date('Y-m-d H:i:s', time() + 10 * 60);
     //创建10分钟后开始
     $data['killsec_start_time'] = date('Y-m-d H:i:s', time() + 22 * 60);
     //创建22分钟后开始秒杀,即活动开始后12分钟
     $data['killsec_end_time'] = date('Y-m-d H:i:s', time() + 52 * 60);
     //创建52分钟后结束秒杀,即秒杀开始后30分钟
     $data['create_time'] = date('Y-m-d H:i:s', time());
     $data['status'] = 1;
     //创建52分钟后结束秒杀,即秒杀开始后30分钟
     $result = $db->data($data)->insert();
     if ($result) {
         echo 'ok';
     } else {
         echo 'fail';
     }
 }
Ejemplo n.º 3
0
Archivo: test.php Proyecto: wdst/Sync
    function status($key, $value)
    {
        $this->result[$key] = $value;
    }
}
class Api
{
    function get($val, $key)
    {
        return $key . " = " . $val . " ... Done";
    }
}
$DB = new DB();
$API = new Api();
$a = new GetterUnit();
$a->data = $DB->data();
$b = new SenderUnit();
$b->requestHandler(function ($key, $value) use($API) {
    return $API->get($value, $key);
});
$a->responseHandler(function ($key, $value) use($DB) {
    return $DB->status($key, $value);
});
$sync = new Sync($a, $b);
// TEST 1
$sync->go();
print_r($DB->result);
// TEST 2
$sync->syncHandler(function ($data, $sync) {
    foreach ($data as $key => $value) {
        $result = $sync->requestHandler($key, $value);
Ejemplo n.º 4
0
 public function going($activity_id)
 {
     /*
     user_id int auto_increment primary key,
     instance_id tinyint(4),
     activity_id tinyint(4),
     join_time datetime,
     order_time datetime,
     pay_time datetime,
     create_time datetime,
     status tinyint(4)
     */
     $db_activity = new DB('activity_killsec', 'killsec');
     $db_instance = new DB('activity_killsec_instance', 'killsec');
     $db_user = new DB('activity_killsec_user', 'killsec');
     $redis = new RedisKillsec();
     $activity_info = $db_activity->where(array('activity_id' => $activity_id))->select();
     // var_dump( $activity_info );
     if (!empty($activity_info)) {
         $activity_info = $activity_info[0];
         $datetime = date('Y-m-d H:i:s', time());
         if ($activity_info['activity_start_time'] > $datetime) {
             echo 'activity not start';
             die;
         }
         if ($activity_info['killsec_end_time'] < $datetime) {
             echo 'killsec is over';
             die;
         }
         if ($activity_info['killsec_start_time'] > $datetime) {
             echo 'killsec not start';
             die;
         }
         $instance_id = $db_instance->where("activity_id='{$activity_id}' and status!=" . self::KILLSEC_STATUS_FINISH)->select('instance_id');
         if ($instance_id) {
             $instance_id = $instance_id[0]['instance_id'];
         } else {
             $instance_id = 0;
         }
         $user_id = mt_rand(1000, 9999);
         $user_exist = $redis->get_user($activity_id, $user_id);
         if ($user_exist) {
             echo 'user exist';
         } else {
             $number = $redis->getrand();
             if ($number == 5) {
                 $token = $redis->get_token($activity_id);
                 if ($token) {
                     //之前改用户不存在
                     //根据activity_id获取活动信息、实例信息
                     //模拟插入
                     $data['instance_id'] = $instance_id;
                     $data['activity_id'] = $activity_info['activity_id'];
                     $data['token'] = $token;
                     $data['join_time'] = date("Y-m-d H:i:s");
                     $data['create_time'] = date("Y-m-d H:i:s");
                     $data['status'] = self::STATUS_TRUE;
                     $db_user->data($data)->insert();
                     $redis->save_user($activity_id, $user_id);
                     echo 'ok';
                 } else {
                     echo 'token not exist';
                 }
             } else {
                 echo 'getrand fail';
             }
         }
     } else {
         echo 'not exist activity';
     }
 }
Ejemplo n.º 5
0
 public static function fetch_one_array($sql)
 {
     $query = self::query($sql);
     self::$data = self::fetch_array($query);
     return self::$data;
 }