Регистрация
Вход через соцсети
Восстановление пароля

Можно ли сделать автоматическое удаление объектов?

Новый топик
18.03.2010, 12:10
Ответить | Цитировать
Гость
Гость

Всем привет! У меня вопрос возник! Есть определенное количество объектов, которые в 1 экземпляре в разных разделах, чтобы не удалять их вручную, можно ли сделать это автоматически, например через месяц, и как это можно реализовать?
19.03.2010, 05:58
Ответить | Цитировать
pe3udent
Артур Юсупов

Зарегистрирован:
2008-04-03
Сообщений: 220

Как вариант, напишите скрипт для этого и добавьте задание в крон.
19.08.2010, 09:01
Ответить | Цитировать
Гость
Гость

Столкнулся с данным вопросом, пока анписал такой скрипт, может кто поправит или подскажет как лучше. А может кому пригодиться

Код:

ini_set("max_execution_time", "0");

// Файлы конфигурации и доступа к базе данных
$NETCAT_FOLDER = join( strstr(__FILE__, "/") ? "/" : "\\", array_slice( preg_split("/[\/\\\]+/", __FILE__), 0, -1 ) ).( strstr(__FILE__, "/") ? "/" : "\\" );
require($NETCAT_FOLDER."vars.inc.php");
require($ROOT_FOLDER."connect_io.php");
require ($INCLUDE_FOLDER."s_files.inc.php");
require_once ($ADMIN_FOLDER."function.inc.php");

global $db;
$date = date('Y-m-d', time()); // Текущая дата
$tables = $db->get_results("SHOW TABLES", ARRAY_N); // Получаем список таблиц

for ($i=0; $i<count($tables); $i++){
if(substr_count($tables[$i][0], "Message")) { // Выбираем таблицы, в названии которых есть Message
$query = $db->get_results("SELECT m.`Message_ID` AS `m_id`, m.`Sub_Class_ID` AS `cc_id`, m.`Subdivision_ID` AS `sub_id`, s.`Catalogue_ID` AS `cat_id`
FROM `".$tables[$i][0]."` AS `m`, `Subdivision` AS `s`
WHERE s.`Subdivision_ID` = m.`Subdivision_ID`
AND `TimeToDelete` < '".$date."'
AND `TimeToDelete` IS NOT NULL
AND `TimeToDelete` > '2000-01-01'", ARRAY_A); // В некоторых объектах дата случайно может быть проставлена 90 годов, исключим их чтобы не удалить
$message_to_delete = array();
$message_to_delete_ids = array();
if ( !empty($query) ) {
foreach ( $query as $v ) {
// группируем объекты по сайты/разделу/сс
$message_to_delete[$v['cat_id']][$v['sub_id']][$v['cc_id']][] = $v['m_id'];
$message_to_delete_ids[] = $v['m_id'];
}
}
// удаляем сами сообщения
if ( !empty( $message_to_delete_ids) ) {
// файлы
foreach ( $message_to_delete_ids as $message_id ) {
DeleteMessageFiles($classID,$message_id);
}
// сообственно удаление
$db->query("DELETE FROM `".$tables[$i][0]."`
WHERE `Message_ID` IN (".join(",",$message_to_delete_ids).")");
}
// системные события
if ( !empty($message_to_delete) ) {
foreach ( $message_to_delete as $catalogue_id => $sub_cc_message) {
foreach ( $sub_cc_message as $sub_id => $cc_message) {
foreach ( $cc_message as $cc_id => $v) {
$nc_core->event->execute("dropMessage", $catalogue_id, $sub_id, $cc_id, $classID, $v);
// модуль комментариев
if ( nc_module_check_by_keyword("comments") ) {
include_once ($MODULE_FOLDER."comments/function.inc.php");
// delete comment rules
nc_comments::dropComments($db, $cc_id, "Sub_Class", $v);
}
}
}
}
}
}
}
19.08.2010, 09:03
Ответить | Цитировать
Гость
Гость

Надо еще теги порезать
25.01.2014, 07:06
Ответить | Цитировать
Вячеслав
ruCreate
Вячеслав

Зарегистрирован:
2013-04-12
Сообщений: 87

<?= $db->query("DELETE FROM `главная таблица`.`MessageXX` WHERE `Created` < NOW() - INTERVAL 10 DAY"); ?>

Старые объекты будут удалятся если их дата создания больше 10 дней, сразу после добавления новых.
25.01.2014, 13:22
Ответить | Цитировать
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 943

Если добавить в режим добавления.

А лучше данный запрос добавить в файл и в крон.

Еще вариант выставить в шапке и при обращении к странице будет обрабатываться запрос и удалит как только кто-то взглянет на страницу после определенного времени

Модуль "Почтовые уведомления" – настройка уведомлений на вашем сайте без программирования. Цена отзыв. Мне очень важно ваше мнение.
198 196 2014-01-25 13:22:27 9887
Описание проекта