PHP
Множественный клик по ссылке на низком интернет соединении. Реакция сервера?
Если при низком качестве интернета кликать много раз по ссылке на сервер начинают отправляться запросы. Как на это реагирует сервер? Насколько это проблемно, стоит ли с этим что-то делать например по первому клику ставить disable с задержкой на кнопку?
никак не реагирует. Половина этих запросов до него даже не поступят!
Сервер каждый запрос получает и обрабатывает независимо от всех прочих запросов. Так что он выполнит действия много раз.
Если это запрос на получение данных браузером (в том числе и переход по ссылке) - проблем не возникает и ничего блокировать не требуется.
Но если это передача данных на сервер - где эти данные пишутся в базу данных - надо принимать меры. Да, блокировать кнопку. Но не на определенное время, а до получения ответа от сервера. Для чего передавать данные AJAX'ом.
Если это запрос на получение данных браузером (в том числе и переход по ссылке) - проблем не возникает и ничего блокировать не требуется.
Но если это передача данных на сервер - где эти данные пишутся в базу данных - надо принимать меры. Да, блокировать кнопку. Но не на определенное время, а до получения ответа от сервера. Для чего передавать данные AJAX'ом.
Это точно
Многие ставят disable, но это не во всех случаях спасает. Конечно стоит проводить проверку мутабельности данных, если они каким-то образом обрабатываются после поступления на сервер. Кто-то отправляет AJAX запрос и ждет ответа от сервера, но при низкой скорости в сети пользователь может устать :) кто-то ставит уникальные токены и проверяет при записи в базу есть такой токен или нет, или придумывает свои решения... Но проблема может случиться и этот момент стоит учитывать в разработке.
Нет. Если ты говоришь про ссылку в html, напрмер
Есть и другие варианты, например:
Другой разговор будет, если у тебя ссылка ведёт на php-файл, который вносит данные в датабазу и выходит обратно (после внесения создаёт редирект на предыдущую страницу).
Решать всякими AJAX - бессмысленно. Надо просто сделать чтобы php проверял, не были ли такие же данные занесены до этого.
Перейти на главную
, то твой браузер просто запомнит, что надо перейти по ссылке. Сервер этого даже не заметит.Есть и другие варианты, например:
Внести данные в базу
то в таком случае, количество внесений в базу ограничено количеством загрузок страницы. Даже при медленном интернете браузер по идее откроет ссылку только один раз.Другой разговор будет, если у тебя ссылка ведёт на php-файл, который вносит данные в датабазу и выходит обратно (после внесения создаёт редирект на предыдущую страницу).
Внести данные в базу
притом файл add.php содержит в себе
, то в таком случае, да. Может быть так что страница загрузится несколько раз. Решать всякими AJAX - бессмысленно. Надо просто сделать чтобы php проверял, не были ли такие же данные занесены до этого.
Похожие вопросы
- Почему для работы php используют http сервер, а веб-приложения на jave, nodeJS или Go, http сервер не требуют?
- HTTP://, создание новых файлов на сервере
- маленький скрипт, на одном сервере работает нормально на другом не очень.
- Изображения на странице сжирают всю память и "кладут" сервер.
- Загрузка файлов на сервер
- Используется ли ссылки в проф программировании (PHP)
- Как предотвратить ввод пользователем невалидных ссылок?
- Делают ли обычные ссылки с помощью get параметров? Как часто и В каких случаях такое применятся.
- Защиту от DDoS-атак прописать в коде можно, или её ставят только имея сервер?
- Чтобы запустить сайт на PHP, необходим сервер с ОС типа Windows Server, правильно?
А на любой костыль - вроде хранения флага "данные обрабатываются" в сессии - можно привести несколько сценариев, когда это не решает проблему, а лишь создаёт новые проблемы.
Единственная точка, в которой гарантированно известно, что данные отправлены - это браузерный JS-код, отправляющий данные.