PHP/MySQL | Чтобы база не распухла
![](/views/icon/no_avatar.png)
DELETED
Автор
29 марта 2015, в 17:59
Delete
Mobiaaa (29.03.2015 в 17:14)
Mr_Ezzy, цикл то зачем?
mysql_query("DELETE FROM `user_logs` WHERE `time` < '".time()."' " );
достаточно будет
Mr_Ezzy, цикл то зачем?
mysql_query("DELETE FROM `user_logs` WHERE `time` < '".time()."' " );
достаточно будет
удалятся все логи, как только время вышло и если чел зашёл по этому времени, то не увидит, кто его сегодня атачил :(
LordSaske, он не сработает.
ибо при LIMIT 1,50 нужно циклом проверять и удалять.
Не вижу смысла.
Вот так и рождаются излишние запросы в базу.
В моём варианте удалятся все варианты, старее суток за 1 запрос.
В вашем случае 51 запрос, если корректно реализовать цикл
ибо при LIMIT 1,50 нужно циклом проверять и удалять.
Не вижу смысла.
Вот так и рождаются излишние запросы в базу.
В моём варианте удалятся все варианты, старее суток за 1 запрос.
В вашем случае 51 запрос, если корректно реализовать цикл
Вилы Выкидные, храните недельные логи, а не суточные
Mobiaaa (29.03.2015 в 18:00)
LordSaske, он не сработает.
ибо при LIMIT 1,50 нужно циклом проверять и удалять.
Не вижу смысла.
Вот так и рождаются излишние запросы в базу.
В моём варианте удалятся все варианты, старее суток за 1 запрос.
В вашем случае 51 запрос, если корректно реализовать цикл
LordSaske, он не сработает.
ибо при LIMIT 1,50 нужно циклом проверять и удалять.
Не вижу смысла.
Вот так и рождаются излишние запросы в базу.
В моём варианте удалятся все варианты, старее суток за 1 запрос.
В вашем случае 51 запрос, если корректно реализовать цикл
Ошибаешся. Сначала идет поиск 50-го поста. После чего удаление всего, что меньше ид-ом того самого 50-го поста
![](/views/icon/no_avatar.png)
DELETED
Автор
29 марта 2015, в 18:05
Delete
Mobiaaa (29.03.2015 в 18:02)
Вилы Выкидные, храните недельные логи, а не суточные
Вилы Выкидные, храните недельные логи, а не суточные
ну как вариант - да :D
как говорится, если хочешь отомстить кому-то и увидеть кому, то чаще заходи в игру, а не через неделю залетишь и давай в санях народ катать, которые забыли уже, когда тебя атачили :)
LordSaske, Да не уж.
$q=mysql_fetch_assoc(mysql_query("select `id` from `user_logs` order by `id` asc(или desc, не помню) limit 1, 50";
Вернёт массив из 50 строк
$q=mysql_fetch_assoc(mysql_query("select `id` from `user_logs` order by `id` asc(или desc, не помню) limit 1, 50";
Вернёт массив из 50 строк
![](/views/icon/no_avatar.png)
DELETED
Автор
29 марта 2015, в 21:32
Delete
Mobiaaa (29.03.2015 в 17:14)
Mr_Ezzy, цикл то зачем?
mysql_query("DELETE FROM `user_logs` WHERE `time` < '".time()."' " );
достаточно будет
Mr_Ezzy, цикл то зачем?
mysql_query("DELETE FROM `user_logs` WHERE `time` < '".time()."' " );
достаточно будет
а если не время, но дату заносить и если авторизовался датой, отличной от занесенной, то удаляем логи, оставляя по текущей?
________
посл. ред. 29.03.2015 в 21:33; всего 1 раз(а); by Вилы Выкидные
Вилы Выкидные, Можно и так.
Это уж на Ваше усмотрение
Это уж на Ваше усмотрение
Mr_Ezzy (29.03.2015 в 16:55)
Вилы Выкидные (29.03.2015 в 16:46)
DEOSPAC (29.03.2015 в 16:42)
Условие на удаление поставь .
пример
ну не знаю,(пример дам)делаешь в базу логов новый столбец `time` в табле логов и в индекс, к примеру, пишешь такое:
$log = mysql_query("SELECT * FROM `user_logs` WHERE `time` < '".time()."'"); // вывод всех логов, у которых время меньше реального времени
while($post=mysql_fetch_array($log)) // создаем цикл
{
mysql_query("DELETE FROM `user_logs` WHERE `id` = '".$post['id']."'"); //удаляем логи, у которых время меньше реального
}
ну и в файл, где эти логи записываются, нужно добавить в скул запрос ',`time` = "'.$timesss.'"' в тот же файл перед запросом $timesss = time()+3600*24;
Примечание: удаляться все логи, которые были до вставки этого кода, чтобы они не удалились, создав новый столбец через php сделай такой запрос:
mysql_query("UPDATE `user_logs` SET `time` = '".(time()+3600*24)."'"); выполни его и удали
Вилы Выкидные (29.03.2015 в 16:46)
DEOSPAC (29.03.2015 в 16:42)
Условие на удаление поставь .
пример
ну не знаю,(пример дам)делаешь в базу логов новый столбец `time` в табле логов и в индекс, к примеру, пишешь такое:
$log = mysql_query("SELECT * FROM `user_logs` WHERE `time` < '".time()."'"); // вывод всех логов, у которых время меньше реального времени
while($post=mysql_fetch_array($log)) // создаем цикл
{
mysql_query("DELETE FROM `user_logs` WHERE `id` = '".$post['id']."'"); //удаляем логи, у которых время меньше реального
}
ну и в файл, где эти логи записываются, нужно добавить в скул запрос ',`time` = "'.$timesss.'"' в тот же файл перед запросом $timesss = time()+3600*24;
Примечание: удаляться все логи, которые были до вставки этого кода, чтобы они не удалились, создав новый столбец через php сделай такой запрос:
mysql_query("UPDATE `user_logs` SET `time` = '".(time()+3600*24)."'"); выполни его и удали
Бидло код какой-то выходит у тебя, а если записей пару тысяч ? Тогда сервер и вовсе зависнет
Просто Нигер (29.03.2015 в 21:56)
Mr_Ezzy (29.03.2015 в 16:55)
Вилы Выкидные (29.03.2015 в 16:46)
DEOSPAC (29.03.2015 в 16:42)
Условие на удаление поставь .
пример
ну не знаю,(пример дам)делаешь в базу логов новый столбец `time` в табле логов и в индекс, к примеру, пишешь такое:
$log = mysql_query("SELECT * FROM `user_logs` WHERE `time` < '".time()."'"); // вывод всех логов, у которых время меньше реального времени
while($post=mysql_fetch_array($log)) // создаем цикл
{
mysql_query("DELETE FROM `user_logs` WHERE `id` = '".$post['id']."'"); //удаляем логи, у которых время меньше реального
}
ну и в файл, где эти логи записываются, нужно добавить в скул запрос ',`time` = "'.$timesss.'"' в тот же файл перед запросом $timesss = time()+3600*24;
Примечание: удаляться все логи, которые были до вставки этого кода, чтобы они не удалились, создав новый столбец через php сделай такой запрос:
mysql_query("UPDATE `user_logs` SET `time` = '".(time()+3600*24)."'"); выполни его и удали
Бидло код какой-то выходит у тебя, а если записей пару тысяч ? Тогда сервер и вовсе зависнет
Mr_Ezzy (29.03.2015 в 16:55)
Вилы Выкидные (29.03.2015 в 16:46)
DEOSPAC (29.03.2015 в 16:42)
Условие на удаление поставь .
пример
ну не знаю,(пример дам)делаешь в базу логов новый столбец `time` в табле логов и в индекс, к примеру, пишешь такое:
$log = mysql_query("SELECT * FROM `user_logs` WHERE `time` < '".time()."'"); // вывод всех логов, у которых время меньше реального времени
while($post=mysql_fetch_array($log)) // создаем цикл
{
mysql_query("DELETE FROM `user_logs` WHERE `id` = '".$post['id']."'"); //удаляем логи, у которых время меньше реального
}
ну и в файл, где эти логи записываются, нужно добавить в скул запрос ',`time` = "'.$timesss.'"' в тот же файл перед запросом $timesss = time()+3600*24;
Примечание: удаляться все логи, которые были до вставки этого кода, чтобы они не удалились, создав новый столбец через php сделай такой запрос:
mysql_query("UPDATE `user_logs` SET `time` = '".(time()+3600*24)."'"); выполни его и удали
Бидло код какой-то выходит у тебя, а если записей пару тысяч ? Тогда сервер и вовсе зависнет
ну, как бы уже на это обратили внимания и я понял, что там не так...
Стр.: 1, 2