Loading...
Помощь по скриптам | Проверка текста за последние 5 минут PHP
Всем привет.
Что я делаю не так?
У меня есть форма поиска, и когда юзер ищет что нибудь я заливаю текст в базу потом вывожу его, как последние запросы. Но что бы один и тот же запрос не повторялся кучу раз я хотел поставить лимит 5 минут на запрос.
Что я делаю не так подсажите)



$sosi = $db->query("SELECT * FROM `search` WHERE `text` = '".$zapros."' LIMIT 1");
while($ss = $db->fetch($sosi))
{
$vremya = $ss['time'];
$minus = time()-300;
if($vremya < $minus){
$error .= 'error';
}
}


________
посл. ред. 22.01.2019 в 09:14; всего 2 раз(а); by TheYaMus
Почему по времени ограничение а не по тексту запроса? И для какой цели такое ограничение?
Сибирский , например если написал один запрос он останется внизу истории) я хочу что бы повторялся запрос но не так часто)
Помощь в любом коде
Запрос уникальным должен быть(зачем тебе куча дубликатов?), для сортировки временную метку сохраняй.
________
посл. ред. 22.01.2019 в 10:09; всего 1 раз(а); by monobogdan
да при сохранении можно помимо текста запроса сохранять его md5 метку и проиндексировать, так же метку времени ставь и просто ищи по хэшу а не по строке, будет и выборка быстрей ну и дубликатов избежишь.
У тебя не верная логика исполнения.
1. Пользователь вводит запрос, ты его записываешь в базу с меткой времени
2. Делаешь выборку из базы уникальных записей за последние N минут

ps дубли можно также сравнивать с последними записями за N минут и не добавлять.
нагрузка на базу будет, по думай о производительности)
Далмат (22.01.2019 в 11:00)
нагрузка на базу будет, по думай о производительности)

facepalm
мне максимально интересно узнать что за нагрузка?)
Можно и нужно не только сравнивать время запроса, а и кешировать результаты
Тогда вместо ошибки пользователю будет возвращаться кешированный результат
Возврат ошибки - слишком грубо
Онлайн: 3
Время:
Gen. 0.105
(c) Bym.Guru 2010-2026