《PHP實例:Thinkphp結合AJAX長輪詢實現PC與APP推送詳解》要點:
本文介紹了PHP實例:Thinkphp結合AJAX長輪詢實現PC與APP推送詳解,希望對您有用。如果有疑問,可以聯系我們。
相關主題:thinkphp教程
PHP編程前言
PHP編程本文主要給大家介紹的關于Thinkphp結合AJAX長輪詢實現PC與APP推送的相關內容,分享出來供大家參考學習,話不多說,來一起看看詳細的介紹.
PHP編程實現邏輯
PHP編程某個操作(比如新建一條公告)后,觸發同時推送消息給APP或是移動WEB的所有用戶或指定用戶.
PHP編程不論性能,總還是有人會用到吧,實現如下(基于Thinkphp5消息推送):
PHP編程PHP長輪詢
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);
}
};
}
PHP編程換上你自己的表和相關的關聯字段.
PHP編程推送消息創建方法
PHP編程
/**
* 創建消息日志 觸發操作方法
* @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;
}
PHP編程采用數據庫存消息并檢測和設計flag的形式推,不然離線消息就沒法推了,同樣的要修改成你自己的數據結構!
PHP編程AJAX長輪詢
PHP編程
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);
PHP編程總結
PHP編程好了,大概就這樣,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對維易PHP的支持
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/403.html