Автоочистка личных сообщений старше чем... с помощью крон. Помогите запустить.

Главные вкладки

Аватар пользователя zegmant zegmant 11 февраля 2011 в 14:55

на drupal.org нашел способ автоочистки личных сообщений старше чем... с помощью крон.

Перевод:
Нужно следующий скрипт заставить исполнятся при запуске крона. Он использует функцию в модуле PM, которая устанавливает поле pm_index.deleted для сообщения на "1", определяя его статус как "удаленное". Если этот статус установлен, сообщение в дальнейшем будет удалено функцией "Flush deleted messages" (Очистить удаленные сообщения) согласно установкам модуля PM при запуске крона.

<?php
$sql 
'SELECT mid FROM {pm_message} WHERE timestamp < %d';

// Messages older than $timestamp are deleted, example, 90 days ago.
$timestamp time() - (90 86400); 

$result db_query($sql$timestamp);

// Fetch over all found messages and mark them as deleted
while ($row db_fetch_object($result)) {
  
privatemsg_message_change_delete($row->midTRUE);
}
?>

Если старых сообений очень много, может возникнуть необходимость ограничить количество обрабатываемых сообщений, по крайней мере первые несколько запусков крона. В таком случае следует использовать функцию "db_query_range" вместо "db_query". Например:

<?php
$result 
db_query_range($sql$timestamp0500); // limit to 500 per run
?>

Вопрос к знатокам - как запустить этот скрипт? Как я понимаю, надо создать простенький модуль, назовем его напр. pmcleaner. В общем алгоритм описан - создаем описание в pmcleaner.info по правилам друпала и сам скрипт помещаем в файл pmcleaner.module.
Как именно прописать исполнение его кроном? Можете написать как это будет выглядеть?

p.s. Прошу извинить если вопрос очевиден специалистам - в php мало понимаю, но очень надо - база растет как снежный ком.

Комментарии