public function onlineplayersource()
{
  $res = $_POST['aoData'];
  $sEcho = 0;
  $iDisplayStart = 0; // 起始索引
  $iDisplayLength = 0;//分页长度
  $jsonarray= json_decode($res) ;
  $start = $jsonarray->start;//intval($res['start']);
  $length = $jsonarray->length;//intval($res['length']);
  $order = $jsonarray->order[0];
  $orderColumn = $jsonarray->columns[$order->column]->data;
  $OnlineRoom = $jsonarray->form_param->OnlineRoom;
  $user_name = $jsonarray->form_param->user_name;
  $startdate = $jsonarray->form_param->startdate;
  $enddate = $jsonarray->form_param->enddate;
 
  $r = [];
  $memcache = new \Memcache();
  $mem_ip = config('cache.stores')['memcached']['servers'][0]['host'];
  $mem_port = config('cache.stores')['memcached']['servers'][0]['port'];
  $sql = "select * FROM [dbo].[fn_GetUserOnline] () d where d.OnlineRoom is not null";
  $key = "online";

  try {

    $memcache->connect($mem_ip,$mem_port);
    $cac = $memcache->get($key);
    if (!$cac) {
      $data = DB::select($sql);//->skip($start)->take($length)->get()->toArray();
      $total = DB::select($cnt_sql);
      $cnt = $total[0]->cnt;
      if($memcache->set($key,['data'=>$data, 'cnt'=>$total[0]->cnt], false, 300))
      {
      }
      $r['from_cache'] = false;
    } else {
      $data = $cac['data'];
      $cnt = count($data);
      $r['from_cache'] = true;
    }
  } catch(\Exception $e) {
    $data = DB::select($sql);//->skip($start)->take($length)->get()->toArray();
    $total = DB::select($cnt_sql);
    $cnt = $total[0]->cnt;
    $r['from_cache'] = false;
    $r['exception'] = true;
  }
  $r['orderColumn'] = $orderColumn;
  $r['orderDir'] = $orderDir;
  $r['start'] = $start;
  $r['length'] = $length;
 
  $ds = $this->process($data, $orderColumn, $orderDir, $user_name, $OnlineRoom, $startdate, $enddate);
  $r['ori'] = $ds;
  $cnt = count($ds);
  $ds = $ds->slice($start, $length);
  $ds = $ds->values()->all();
  $r['ds'] = $ds;
  $data = $ds;
  $ipobj = new \App\Http\Model\IP();
  foreach ($ds as $player) {
    $addr = $ipobj->ip2addr($player->LastLoginIP);
    if (isset($addr)) {
      $player->LastLoginIPText = '【'.$addr['country'].'】'.$addr['area'];
    } else {
      $player->LastLoginIPText = '';
    }
  }
  $r['data'] = $data;
 
  $r['iTotalDisplayRecords'] = $cnt;
  $r['iTotalRecords'] = $cnt;
  return json_encode($r);
}
 
private function process($arr, $order, $orderDir, $user_name, $OnlineRoom, $startdate, $enddate) {
  $col = collect($arr);
  if ($orderDir == 'desc')
    $sorted = $col->sortByDesc($order);
  else
    $sorted = $col->sortBy($order);
  $sorted = $sorted->filter(function ($value, $key) use($user_name, $OnlineRoom, $startdate, $enddate) {
    $result = true;
    if (isset($value->UserName) && strlen($value->UserName) > 0 && isset($user_name) && strlen($user_name) > 0) {
      $position = strpos($value->UserName, $user_name);
      if ($position === false)
        $result = false;
      else
        $result = true;
    }
    $result_uid = true;
    if (isset($value->UserID) && strlen($value->UserID) > 0 && isset($user_name) && strlen($user_name) > 0) {
      if ($value->UserID != $user_name) {
        $result_uid = false;
      }
    }
    $result = $result || $result_uid;
    $result_onlineroom = true;
    if (isset($value->OnlineRoom) && strlen($value->OnlineRoom) > 0 && isset($OnlineRoom) && strlen($OnlineRoom) > 0) {
      if ($value->OnlineRoom != $OnlineRoom) {
        $result_onlineroom = false;
      }
    }
    $result = $result && $result_onlineroom;
    $result2 = true;
    if (isset($value->LastLoginTM) && strlen($value->LastLoginTM) > 0 && isset($startdate) && strlen($startdate) > 0) {
      if ($startdate && $startdate != '') {
        $result2 = strtotime($value->LastLoginTM) > strtotime($startdate);
      }
    }
    $result = $result && $result2;
    $result3 = true;
    if (isset($value->LastLoginTM) && strlen($value->LastLoginTM) > 0 && isset($enddate) && strlen($enddate) > 0) {
      if ($enddate && $enddate != '') {
        $result3 = strtotime($value->LastLoginTM) <= strtotime($enddate);
      }
    }
    $result = $result && $result3;

    return $result;

  });
  //$sorted = $sorted->where('IsRobot', 0);
  return $sorted;
}

laravel读取memcached缓存并做条件查询的更多相关文章

  1. mysql拆分字符串做条件查询

    mysql拆分字符串作为查询条件 有个群友问一个问题 这表的ancestors列存放的是所有的祖先节点,以,分隔 例如我查询dept_id为103的所有祖先节点,现在我只有一个dept_id该怎么查 ...

  2. 用Set中元素做条件查询

    一个老师教许多学生,一个学生被许多老师教,一个学生有好多书,同一种书被许多同学拥有.查询教拥有书"a"的学生的老师:   class teacher{   String id;   ...

  3. laravel 根据字段不同值做不同查询

    在开发过程中我们经常遇到这种情况: 例如,一个信息表message,字段type 1.操作提醒 2.平台通知,表message_read记录当信息是平台通知时用户浏览状况 那么 当信息是平台通知时是针 ...

  4. 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma

     1 PersonTestMapper.xml中的内容如下: <?xmlversion="1.0"encoding="UTF-8"?> < ...

  5. 应对Memcached缓存失效,导致高并发查询DB的四种思路(l转)

    当Memcached缓存失效时,容易出现高并发的查询DB,导致DB压力骤然上升. 这篇blog主要是探讨如何在缓存将要失效时,及时地更新缓存,而不是如何在缓存失效之后,如何防止高并发的DB查询. 解决 ...

  6. 应对Memcached缓存失效,导致高并发查询DB的几种思路

    原文地址: http://blog.csdn.net/hengyunabc/article/details/20735701 当Memcached缓存失效时,容易出现高并发的查询DB,导致DB压力骤然 ...

  7. 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据

    1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...

  8. Laravel条件查询数据单条数据first,多条数据get

    使用DB查询,必须use Illuminate\Support\Facades\DB; 多数组条件查询单条数据 first() //提交加入我们数据 public function ajax_join ...

  9. Linq和EF 做 单一条件查询 和 复合条件 查询 以及 多表 联合查询 示例

    单一条件查询: var table2Object = (from t1 in db.table1 join t2 in db.table2 on t1.id equals t2.id select t ...

随机推荐

  1. SSL 证书服务推荐

    最近要用到ssl.故做了一些搜索 1.Let's Encrypt:免费,快捷,支持多域名(不是通配符),三条命令即时签署+导出证书.缺点是暂时只有三个月有效期,到期需续签. 2.StartSSL免费D ...

  2. Win7-64位安装TensorFlow-GPU

    1.查看电脑显卡 路径:计算机--属性--设备管理器-显示适配器 2.显卡(GPU)是否支持CUDN https://developer.nvidia.com/cuda-gpus 3.安装 1)CUD ...

  3. vi编辑器的使用方式

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...

  4. OpenGL核心技术之帧缓冲

    笔者介绍:姜雪伟.IT公司技术合伙人,IT高级讲师.CSDN社区专家.特邀编辑.畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...

  5. Maven 那点事儿

    http://my.oschina.net/huangyong/blog/194583?fromerr=Dmf7HPwX Java那点事儿 Maven Smart 目录[-] 0. 前言 1. 安装 ...

  6. 【NLP】文本相似度

    http://www.ruanyifeng.com/blog/2013/03/cosine_similarity.html

  7. VC6.0在win 8.1中的安装使用

    http://blog.csdn.net/liups/article/details/14646663 一.首先是win8.1的安装 本人选择的是win 8.1简体中文专业N版,文件名: cn_win ...

  8. python 读取csv文件

    python中有一个读写csv文件的包,直接import csv即可 新建test.csv 1.写 import csv with open("test.csv","w& ...

  9. [Err] 1231 - Variable 'sql_mode' can't be set to the value of 'NULL

    在MYSQL还原语句的时候,报: [Err] - Variable 'sql_mode' can't be set to the value of 'NULL 解决办法:打开SQL语句,把里面的注释给 ...

  10. Docker容器的生命周期管理

    https://blog.csdn.net/u010278923/article/details/78751306