php ajax轮询推送,Thinkphp结合AJAX长轮询实现PC与APP的推送

这篇文章主要介绍了关于Thinkphp结合AJAX长轮询实现PC与APP的推送,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

前言

本文主要给大家介绍的关于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);

}

};

}

换上你自己的表和相关的关联字段。

推送消息创建方法

/**

* 创建消息日志 触发操作方法

* @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;

}

采用数据库存消息并检测和设计flag的形式推,不然离线消息就没法推了,同样的要修改成你自己的数据结构!

AJAX长轮询

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('

' + item.u_name + ':' + item.log_content + '' + item.log_time + '');

});

}else{

}

}

};

//关键在这里,Ajax定时访问服务端,不断获取数据 ,这里是1秒请求一次。

window.setInterval(function () {

$.ajax(getting)

}, 1000);

相关推荐:

主要内容:本文详细介绍了一种QRBiLSTM(分位数回归双向短期记忆网络)的时间序列区间预测方法。首先介绍了项目背景以及模型的优势,比如能够有效利用双向的信息,并对未来的趋势上限和下限做出估计。接着从数据生成出发讲述了具体的代码操作过程:数据预处理,搭建模型,进行训练,并最终可视化预测结果与计算分位数回归的边界线。提供的示例代码可以完全运行并且包含了数据生成环节,便于新手快速上手,深入学习。此外还指出了模型未来发展的方向,例如加入额外的输入特性和改善超参数配置等途径提高模型的表现。文中强调了时间序列的标准化和平稳检验,在样本划分阶段需要按时间序列顺序进行划分,并在训练阶段采取合适的手段预防过度拟合发生。 适合人群:对于希望学习和应用双向短时记忆网络解决时序数据预测的初学者和具有一定基础的研究人员。尤其适用于有金融数据分析需求、需要做多一步或多步预测任务的从业者。 使用场景及目标:应用于金融市场波动预报、天气状况变化预测或是物流管理等多个领域内的决策支持。主要目的在于不仅能够提供精确的数值预计还能描绘出相应的区间概率图以增强结论置信程度。 补充说明:本教程通过一个由正弦信号加白噪构造而成的简单实例来指导大家理解和执行QRBiLSTM流程的所有关键步骤,这既方便于初学者跟踪学习,又有利于专业人士作为现有系统的补充参考工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值