PHP后台通知
Notification on background PHP
我有一个web应用程序,它使用通知来通知用户任何新信息(就像Facebook一样)。
我的解决方案是,我每三秒发送一个请求,检查数据库是否有新的显示内容(jQuery和AJAX)。但是,这会使应用程序速度变慢,因为每隔三秒就会向检查表发送一个请求。
我想知道如何在不中断应用程序的情况下使这些通知正常工作。
这是我的JS代码:
jQuery(document).ready(function(){
LoopNotificationCRM();
});
function LoopNotificationCRM(){
setTimeout('LoopNotificationCRM();',3000);
$.ajax({
async: false,
type: "POST",
url: "controllers/c_ajax_notification.php",
data: "ordre=check_new_notification",
success: function(msg){
if(msg != 'NAN'){
var t = msg.split('***');
$('.sNotification').html(t[0]);
$('.ul-notification').html(t[1]);
$('.alert-notification').css('display','block');
}else{
$('.sNotification').html(0);
$('.alert-notification').css('display','none');
$('.ul-notification').html('');
}
},
error: function (xhr, status) {
alert('Erreur: ' + status);
}
});
}
这是我的PHP代码:
$notification->getNewNotification("*");
if($notification->db_num_row != 0){
$listNoti = '';
while($resN = $notification->fetch_array()){
$today = new DateTime(date('Y-m-d H:i:s'));
$datNoti = new DateTime($resN['date_not_crm']);
$diff = $datNoti->diff($today);
if($diff->d == 0){
if($diff->h == 0){
if($diff->i == 0){
$intervale = 'il y a '.$diff->s.' sec';
}else{
$intervale = 'il y a '.$diff->i.' min';
}
}else{
$intervale = 'il y a '.$diff->h.' heure(s)';
}
}else{
$intervale = 'il y a '.$diff->d.' jour(s)';
}
$listNoti .= '<li>
<a onclick="link(event,'''.$resN['url_not_crm'].''');updateEtatNoti(this,'.$resN['id_not_crm'].');" style="cursor:pointer;">
<span class="label label-icon label-success"><i class="'.$resN['icon_not_crm'].'"></i></span>
'.$notification->csNotification($resN['description_not_crm']).'
<span class="time">'.$intervale.'</span>
</a>
</li>';
}
echo $notification->getCountNewNotification().'***'.$listNoti;
}else{
echo 'NAN';
}
当我删除通知代码时,我的应用程序会变得更快!
如果您的应用程序在每3秒运行一次ajax时速度减慢,请尝试简化/缩小ajax加载页面所需的工作量。例如,不要读取整个表,而是尝试只选择"已读"状态为0的通知。这样一来,php文件的执行速度更快,这意味着ajax不会降低页面的速度。
相关文章:
- Firebase2(Firebase.google.com)推送通知-从外部管理
- 选项卡侦听器未被来自后台脚本的消息激活
- 无法在窗口内使用rootScope.通知
- JS,用于播放提示音以通知未按预期工作
- WinJS(WP8.1):从后台任务更新辅助磁贴
- JS页面在后台加载时显示动画
- Mozilla没有;t在附加视频src后触发视频后台事件
- 将图像从后台页面传递给内容脚本javascript
- 如何为后台更改程序代码设置cookie
- 单击Chrome通知后,转到已打开的选项卡
- Windows Azure通知中心错误
- jar文件的后台进程,如何在进程结束时异步通知我
- 通知Ajax/Javascript后台PHP已经完成
- $http请求的后台处理通知
- Chrome扩展如何获得后台脚本将被关闭的通知
- React-Native:使用推送通知来唤醒后台任务
- 当应用程序被终止或后台执行时,推送通知不会启动
- 使用canvas创建桌面通知图像,只有一个图像可以从后台页面工作
- PHP后台通知
- 在后台运行javascript函数,同时接收推送通知