Maison  >  Article  >  développement back-end  >  Thinkphp combine une longue interrogation AJAX pour implémenter le push PC et APP

Thinkphp combine une longue interrogation AJAX pour implémenter le push PC et APP

不言
不言original
2018-05-08 11:23:342208parcourir

Cet article présente principalement Thinkphp combiné avec de longues interrogations AJAX pour réaliser le push PC et APP. Il a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

<.>Avant-propos

Cet article vous présente principalement le contenu pertinent sur Thinkphp combiné avec de longues interrogations AJAX pour réaliser le push PC et APP. Je le partagerai pour votre référence et votre étude sans plus. ado, jetons un coup d'œil à l'introduction détaillée.

Mettre en œuvre la logique

Après une certaine opération (comme la création d'une nouvelle annonce), déclencher le push simultané de messages à tous les utilisateurs ou utilisateurs désignés de l'APP ou WEB mobile.

Indépendamment des performances, il y a encore des gens qui l'utiliseront. L'implémentation est la suivante (basée sur le message push Thinkphp5) :

Interrogation longue PHP

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

Remplacez par votre propre table et les champs associés.

Méthode de création de message push

/**
 * 创建消息日志 触发操作方法
 * @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 = [
  &#39;log_c_id&#39; => $log_c_id,
  &#39;log_ip&#39; => get_client_ip(),
  &#39;log_admin&#39; => $log_admin,
  &#39;log_time&#39; => date("Y-m-d H:i:s", time()),
  &#39;log_url&#39; => get_url(),
  &#39;log_type&#39; => $log_type,
  &#39;log_content&#39; => $log_content,
  &#39;log_user&#39; => $log_user,
  &#39;log_status&#39;=>$log_status
 ];
 $logadd = \think\Db::name(&#39;table&#39;)->insertGetId($data);
 return $logadd;
}

Prendre un message d'inventaire des données et détecter et Concevez le formulaire de drapeau pour qu'il soit poussé, sinon les messages hors ligne ne seront pas poussés. Vous devez également le modifier selon votre propre structure de données !

AJAX Long Polling

 var getting = {
  url: &#39;{:url("youapi/url")}&#39;,
  dataType: &#39;json&#39;,
  success: function (res) {
   $(".count").text($(&#39;.llt&#39;).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);
Recommandations associées :

Explication détaillée Thinkphp combine ajaxFileUpload pour implémenter un exemple de code de transmission d'image asynchrone

ThinkPHP combine ajax et Mysql pour implémenter le code de fonction de communication client example_PHP tutoriel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn