From: martinlanghoff Date: Tue, 8 Jan 2008 20:58:24 +0000 (+0000) Subject: mod/chat:chat_cron() delete stale chat messages with a single query, fast, and portab... X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=319038c39dfb81ffc41132bd42eaff3e534db215;p=moodle.git mod/chat:chat_cron() delete stale chat messages with a single query, fast, and portable too! MDL-11674 --- diff --git a/mod/chat/lib.php b/mod/chat/lib.php index 03b570b402..87ecc56066 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);