Я делаю систему PM, и в настоящее время я добавляю систему с пометкой сообщений (чтобы пользователь мог помечать сообщения).
Проблема заключается в том, что если пользователь продолжает разыгрывать и снимать с себя сообщение очень быстро (щелкнув по нему снова и снова) он испортит сервер (хост выдаст ошибку 503, пока процессы не остановятся).Чтобы пометить сообщение, достаточно просто щелкнуть звездочку, чтобы пометить ее, или щелкнуть еще раз, чтобы снять ее.
Есть ли способ предотвратить частый щелчок по нему, или, скорее, вызвать ошибку, появляющуюся после того, какнажал x количество раз в минуту?Это предотвратит перегрузку сервера, поскольку при нажатии на звездочку он отправляет запрос AJAX и обновляет базу данных;когда вы снимаете его, он делает то же самое.
Есть ли способ показать ошибку jQuery, если звезда нажата в течение минуты или около того?
Вот мои функции для ролей:
function addStar(id) {
$('#starimg_' + id).removeClass("not_starred").addClass("starred");
$('#star_' + id).attr({
'title': 'Starred',
'onclick': 'removeStar(' + id + ')'
});
$.get('tools.php?type=addstar', {id: id}, function(data) {
if(data=='true') { // tools.php will echo 'true' if it is successful
alertBox('The message has been starred successfully', 2500);
}
else { alertBox('An error has occurred. Please try again later.'); }
});
}
function removeStar(id) {
$('#starimg_' + id).removeClass("starred").addClass("not_starred");
$('#star_' + id).attr({
'title': 'Not starred',
'onclick': 'addStar(' + id + ')'
});
$.get('tools.php?type=removestar', {id: id}, function(data) {
if(data=='true') { // tools.php will echo 'true' if it is successful
alertBox('The message has been unstarred successfully', 2500);
}
else { alertBox('An error has occurred. Please try again later.'); }
});
}
Заранее спасибо!