У меня есть веб-приложение, которое использует уведомление, чтобы информировать пользователя о чем-либо новом (как и в 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('Ymd 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 ya '.$diff->s.' sec'; }else{ $intervale = 'il ya '.$diff->i.' min'; } }else{ $intervale = 'il ya '.$diff->h.' heure(s)'; } }else{ $intervale = 'il ya '.$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'; }
Когда я удаляю код уведомления, мое приложение становится быстрее!