У меня есть скрипт чата, написанный на PHP Ajax и MySQL. Он сохраняет сообщение в таблице «usermsg».
Моя проблема заключается в том, что у меня есть только MySQL db из 100mb, и я не могу хранить все сообщения, так как у меня 55 пользователей, а квоты моей базы данных недостаточно, чтобы запасать все, и когда он заполнен, мой чат останавливается автоматически. Поэтому я выполняю truncat от PhpMyAdmin каждый раз, когда чувствую, что он почти заполнен. То, что я хочу сделать, так или иначе выполняет truncat ежечасно, поэтому он может очищать мой стол каждый час.
Может ли кто-нибудь помочь с PHP-скриптом или что-то в этом роде? Благодарю.
Я чувствую, что это ежечасно игнорирует более простой вариант.
Другой вариант – удалить самую старую запись каждый раз, когда будет сделана новая запись. Это устраняет необходимость выполнения задания cron, которое выгружает всю таблицу, поскольку это может прерывать чат, удаляя записи, сделанные всего лишь несколько мгновений назад, которые все еще имеют отношение к чату.
Поэтому в вашем «addMessage» sql просто удалите самую старую запись перед отправкой нового.
Для этого вы можете использовать планировщик событий.
В phpmyadmin выполните следующие запросы.
Включите его, используя
SET GLOBAL EVENT_SCHEDULER = ON;
И создайте такое событие
CREATE EVENT delete_messages ON SCHEDULE EVERY 3 DAY DO TRUNCATE TABLE 'tableName';
Вот хороший учебник по этому вопросу.
Планировщик событий Phpmyadmin
Используйте cronjobs для выполнения php для почасового или использования событий mysql для достижения этой задачи
Способ 1:
создайте php и сделайте cron-задания для него
<?php // write database connection code mysqli_query("TRUNCATE TABLE tablename"); ?>
и назовите этот php в cron
php /path/to php file
Способ 2:
создайте mysql EVENT
. предоставить привилегию доступа к событию для таблицы
SET GLOBAL EVENT_SCHEDULER = ON; CREATE EVENT e_truncate ON SCHEDULE EVERY 1 HOUR DO TRUNCATE TABLE tablename