X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;ds=sidebyside;f=bin%2Fcron%2Fcron_ml_moderate.php;h=c4d16b5a4c25b3d8640c94279a4772dad9f2de9b;hb=cafb410fea6f257f45da08631c6cdb5c35f86b17;hp=268cdd358586af1dbe3b1a9648247ea0d5d0eec6;hpb=93d42b4fcc6f055a428c9b63e386ac62c918d08a;p=platal.git diff --git a/bin/cron/cron_ml_moderate.php b/bin/cron/cron_ml_moderate.php index 268cdd3..c4d16b5 100755 --- a/bin/cron/cron_ml_moderate.php +++ b/bin/cron/cron_ml_moderate.php @@ -26,20 +26,25 @@ ini_set('memory_limit', '128M'); $sent_mails = 0; $handler = time(); +/* Cleanup dead locks */ +XDB::execute('UPDATE email_list_moderate + SET handler = NULL + WHERE handler < NOW() - 300'); + while ($sent_mails < $globals->lists->max_mail_per_min && time() - $handler < 60) { // take a lock on a mail - XDB::execute("UPDATE email_list_moderate + XDB::execute('UPDATE email_list_moderate SET handler = {?} WHERE handler IS NULL ORDER BY ts - LIMIT 1", $handler); + LIMIT 1', $handler); if (XDB::affectedRows() == 0) { break; } - $query = XDB::query('SELECT a.fullname, a.uid, a.password, + $query = XDB::query('SELECT a.full_name, a.uid, a.password, ml.ml, ml.domain, ml.mid, ml.action, ml.message - FROM accounts AS a + FROM accounts AS a INNER JOIN email_list_moderate AS ml ON (a.uid = ml.uid) WHERE ml.handler = {?}', $handler); list($fullname, $uid, $password, $list, $domain, $mid, $action, $reason) = $query->fetchOneRow(); @@ -48,7 +53,7 @@ while ($sent_mails < $globals->lists->max_mail_per_min $client = new MMList($uid, $password, $domain); // send the mail - $mail = $client->get_pending_mail($list, $mid); + $mail = $client->get_pending_mail($list, $mid); list($det,$mem,$own) = $client->get_members($list); $count = 0; switch ($action) { @@ -70,7 +75,7 @@ while ($sent_mails < $globals->lists->max_mail_per_min $action = 3; /** 3 = DISCARD **/ $subject = "Message supprimé"; $append = "a été supprimé par $fullname.\n\n" - . "Rappel: il ne faut utiliser cette opération " + . "Rappel : il ne faut utiliser cette opération " . "que dans le cas de spams ou de virus !\n"; $type = 'spam'; $count += count($own); @@ -115,7 +120,8 @@ while ($sent_mails < $globals->lists->max_mail_per_min } // release the lock - XDB::execute("DELETE FROM email_list_moderate WHERE handler = {?}", + XDB::execute('DELETE FROM email_list_moderate + WHERE handler = {?}', $handler); sleep(60 * $count / $globals->lists->max_mail_per_min); }