Окей, а почему бы вам не снимать обработчик с кнопки именно с помощью js? Вы не привели пример вашего кода, потому приходится гадать на кофейной гуще.
Вариант 1:
Допустим, у вас есть обработчик и допустим, что вы используете jquery и аяксом отправляете данные на сервер.
$("#button").click(function(data){
$(this).off();//Отключаем обработчики ВСЕХ событий висящих на данном элементе
$.ajax({
method: "POST",
url: "pathToFile.php",
data: data,
success: function(result){
//А здесь включаем обработчик обратно, уже после выполнения вашей Php функции и полчуения ответа от обработчика на сервере
$("#button").on();
}
})
});
Естественно код выше - накаляканная за две секунды паста и абсолютно не работоспособна в ваших условиях. Так что если вам придется по душе данное решение - необходимо будет довести его до ума.
Вариант 2
На стороне сервера вам необходимо как-то идентифицировать пользователя, от которого приходит запрос. Как вы это сделаете - вопрос десятый.
Самым простым вариантом, как мне кажется, будет использование БД.
Создаете таблицу, в которую пишете те данные, по которым вы идентифицируете пользователя, и время, после наступления которого вашу функцию можно будет выполнить. К примеру это время запроса + 5 секунд.
Ну а дальше при каждом последующем запросе теребите таблицу, берите из неё время, сравнивайте с текущим и решайте, обрабатывать запрос или нет.
А можете, для уверенности, комбинировать эти два варианта