yskl 发表于 2018-2-11 11:51:33


            前言
本文主要给大家介绍的关于Thinkphp结合AJAX长轮询实现PC与APP推送的相关内容,分享出来供大家参考学习,话不多说,来一起看看详细的介绍。
实现逻辑
某个操作(比如新建一条公告)后,触发同时推送消息给APP或是移动WEB的所有用户或指定用户。
不论性能,总还是有人会用到吧,实现如下(基于Thinkphp5消息推送):
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);
   }

};
}
页: [1]
查看完整版本: Thinkphp结合AJAX长轮询实现PC与APP推送详解