Home  >  Article  >  Backend Development  >  Thinkphp combines AJAX long polling to implement PC and APP push

Thinkphp combines AJAX long polling to implement PC and APP push

不言
不言Original
2018-05-08 11:23:342210browse

This article mainly introduces Thinkphp combined with AJAX long polling to realize PC and APP push. It has certain reference value. Now I share it with everyone. Friends in need can refer to it

Preface

This article mainly introduces to you the relevant content about Thinkphp combined with AJAX long polling to realize PC and APP push. It is shared for your reference and study. Without further ado, Let’s take a look at the detailed introduction.

Implementing logic

After a certain operation (such as creating a new announcement), trigger the simultaneous push of messages to all users or designated users of the APP or mobile WEB.

Regardless of performance, some people will still use it. The implementation is as follows (based on Thinkphp5 message push):

PHP long polling

/*
  * long轮询 API查询接口
  */
 public function id_log()
 {
  if (request()->isPost()) {
   $id = $this->param['id'];
 
   set_time_limit(0);
   $id_log = Db::name('table')->alias('c')
    ->join('table cc', 'c.youname=cc.youname', 'left')
    ->join('table a', 'cc.youname =a.youname ', 'left')
    ->join('table u', 'c.youname =u.youname ', 'left')
    ->field('')
    ->where('', $id)
    ->order('log_time desc')
    ->limit(1)
    ->select();
 
   while (true) {
    if ($id_log) {
     $id_log_set = Db::name('table2')
      ->where('', $id)
      ->limit(1)
      ->setField('log_flag', '1');
     $this->response($id_log);
    }
    $this->wrong(404100);
    usleep(2000);
   }
 
  };
 }

Replace with your own table and related related fields.

Push message creation method

/**
 * 创建消息日志 触发操作方法
 * @param string $log_content 日志内容
 * @param string $log_type 日志类型
 * @param int $log_c_id A用户ID
 * @param string $log_user B用户ID
 * @param string $log_admin PC
 * @param string $log_status
 * @return array
 */
function createLog($log_c_id, $log_type, $log_content, $log_admin, $log_user,$log_status)
{
 $data = [
  'log_c_id' => $log_c_id,
  'log_ip' => get_client_ip(),
  'log_admin' => $log_admin,
  'log_time' => date("Y-m-d H:i:s", time()),
  'log_url' => get_url(),
  'log_type' => $log_type,
  'log_content' => $log_content,
  'log_user' => $log_user,
  'log_status'=>$log_status
 ];
 $logadd = \think\Db::name('table')->insertGetId($data);
 return $logadd;
}

Adopt data inventory message and detect and design flag Push in the form, otherwise offline messages will not be pushed. Likewise, you need to modify it into your own data structure!

AJAX long polling

##

 var getting = {
  url: '{:url("youapi/url")}',
  dataType: 'json',
  success: function (res) {
   $(".count").text($('.llt').children().size());
   $(".llt").remove();
   if(res.length!=null){
    $.each(res, function (index, item) {
     $(".notification").append(&#39;<li class="llt" data-ccid="&#39; + item.id + &#39;"><a href="{:url(" rel="external nofollow" admin/carloan/edit")}?id=&#39;+item.log_c_id+&#39;"><span class="label label-info"><i class="icon-bullhorn"></i></span><span class="message">&#39; + item.u_name + &#39;:&#39; + item.log_content + &#39;</span><span class="time"><span class="liveTime">&#39; + item.log_time + &#39;</span></span></a></li>&#39;);
    });
   }else{
   }
  }
 };
 //关键在这里,Ajax定时访问服务端,不断获取数据 ,这里是1秒请求一次。
 window.setInterval(function () {
  $.ajax(getting)
 }, 1000);

Related recommendations:

Detailed explanation of Thinkphp combination ajaxFileUpload implements asynchronous image transmission sample code

ThinkPHP combines ajax and Mysql to implement client communication function code example_PHP tutorial

The above is the detailed content of Thinkphp combines AJAX long polling to implement PC and APP push. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn