PHP/MySQL | Чтобы база не распухла
![](/views/icon/no_avatar.png)
DELETED
Автор
29 марта 2015, в 16:39
Delete
Нужно организовать хранение логов по условию: либо типа только последние 50 атак, либо все атаки только за сегодняшний(текущий) день.
Не вывод показа этих логов, а чтобы если идёт, например 51-лог, то 1-й чтобы очищался или если сутки закончились, то чистим юзеру все логи, типа так.
Кто на пальцах пояснит, чем можно организовать, кроме крона?
________
посл. ред. 29.03.2015 в 16:40; всего 1 раз(а); by Вилы Выкидные
Условие на удаление поставь .
![](/views/icon/no_avatar.png)
DELETED
Автор
29 марта 2015, в 16:46
Delete
DEOSPAC (29.03.2015 в 16:42)
Условие на удаление поставь .
Условие на удаление поставь .
пример
Вилы Выкидные (29.03.2015 в 16:46)
DEOSPAC (29.03.2015 в 16:42)
Условие на удаление поставь .
пример
DEOSPAC (29.03.2015 в 16:42)
Условие на удаление поставь .
пример
поищу
Вилы Выкидные (29.03.2015 в 16:46)
DEOSPAC (29.03.2015 в 16:42)
Условие на удаление поставь .
пример
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:59; всего 3 раз(а); by Mr_Ezzy
А крон задание не вариант?
Zaruba (29.03.2015 в 17:05)
А крон задание не вариант?
А крон задание не вариант?
прочитай полностью шапку
Mr_Ezzy, цикл то зачем?
mysql_query("DELETE FROM `user_logs` WHERE `time` < '".time()."' " );
достаточно будет
mysql_query("DELETE FROM `user_logs` WHERE `time` < '".time()."' " );
достаточно будет
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()."' " );
достаточно будет
хм...Чёт протупил
![Гг](https://bym.guru/modules/smiles/smiles/gg.gif)
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()."' " );
достаточно будет
Можно чуть иначе
$q=mysql_fetch_assoc(mysql_query("select `id` from `user_logs` order by `id` asc(или desc, не помню) limit 1, 50");
mysql_query("delete from `user_logs` where `id` < '$q[id]'");
Максимально приблежонный вариант реализации)
Стр.: 1, 2