From 319038c39dfb81ffc41132bd42eaff3e534db215 Mon Sep 17 00:00:00 2001 From: martinlanghoff Date: Tue, 8 Jan 2008 20:58:24 +0000 Subject: [PATCH] mod/chat:chat_cron() delete stale chat messages with a single query, fast, and portable too! MDL-11674 --- mod/chat/lib.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mod/chat/lib.php b/mod/chat/lib.php index 03b570b4023..87ecc56066e 100644 --- a/mod/chat/lib.php +++ b/mod/chat/lib.php @@ -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);