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['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); } }; }
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 = [ '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; }
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('<li class="llt" data-ccid="' + item.id + '"><a href="{:url(" rel="external nofollow" admin/carloan/edit")}?id='+item.log_c_id+'"><span class="label label-info"><i class="icon-bullhorn"></i></span><span class="message">' + item.u_name + ':' + item.log_content + '</span><span class="time"><span class="liveTime">' + item.log_time + '</span></span></a></li>'); }); }else{ } } }; //关键在这里,Ajax定时访问服务端,不断获取数据 ,这里是1秒请求一次。 window.setInterval(function () { $.ajax(getting) }, 1000);
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!