mod/chat:chat_cron() delete stale chat messages with a single query, fast, and portable too! MDL-11674

This commit is contained in:
martinlanghoff 2008-01-08 20:58:24 +00:00
parent 667a2d481e
commit 319038c39d

View File

@ -204,14 +204,15 @@ function chat_cron () {
chat_delete_old_users();
/// Delete old messages
$keepdays = "SELECT c.keepdays
FROM {$CFG->prefix}chat c
WHERE c.id = {$CFG->prefix}chat_messages.chatid AND c.keepdays > 0";
/// Delete old messages with a
/// single SQL query.
$subselect = "SELECT c.keepdays
FROM {$CFG->prefix}chat c
WHERE c.id = {$CFG->prefix}chat_messages.chatid";
$sql = "DELETE
$sql = "DELETE
FROM {$CFG->prefix}chat_messages
WHERE timestamp < ( ".time()." - COALESCE(($keepdays), 999999) * 24 * 3600)";
WHERE ($subselect) > 0 AND timestamp < ( ".time()." -($subselect) * 24 * 3600)";
execute_sql($sql, false);