File size: 4.62Kb
<?php
// очистка временной папки
if ( !isset( $hard_process ) ) {
$q = db::query("SELECT * FROM `cron` WHERE `id` = 'clear_tmp_dir'");
if ( $q->fetch_row() == 0 )
db::query("INSERT INTO `cron` (`id`, `time`) VALUES ('clear_tmp_dir', '$time')");
$clear_dir = $q->fetch_assoc();
if ( !$clear_dir['time'] || $clear_dir['time'] < $time - 60 * 60 * 24 ) {
$hard_process = true;
db::query("UPDATE `cron` SET `time` = '$time' WHERE `id` = 'clear_tmp_dir'");
$od = opendir( H . 'sys/tmp/' );
while ( $rd = readdir( $od ) ) {
if ( !preg_match( '#^\.#', $rd ) && filectime( H . 'sys/tmp/' . $rd ) < $time - 60 * 60 * 24 ) {
@delete_dir( H . 'sys/tmp/' . $rd );
}
}
closedir( $od );
}
}
// Подведение итогов статистики
if ( !isset( $hard_process ) ) {
$q = db::query("SELECT * FROM `cron` WHERE `id` = 'visit' LIMIT 1");
if ( $q->fetch_row() == 0 )
db::query("INSERT INTO `cron` (`id`, `time`) VALUES ('visit', '$time')");
$visit = $q->fetch_assoc();
if ( $visit['time'] == NULL || $visit['time'] < time() - 60 * 60 * 24 ) {
if ( function_exists( 'set_time_limit' ) )
@set_time_limit( 600 );
$last_day = mktime( 0, 0, 0, date( 'm' ), date( 'd' ) - 1 );
$today_time = mktime( 0, 0, 0 );
if ( db::count("SELECT COUNT(*) FROM `visit_everyday` WHERE `time` = '$last_day'") == 0 ) {
$hard_process = true;
db::query("INSERT INTO `visit_everyday` (`host` , `host_ip_ua`, `hit`, `time`)
VALUES ((SELECT COUNT(DISTINCT `ip`) FROM `visit_today` WHERE `time` < '$today_time'),
(SELECT COUNT(DISTINCT `ip`, `ua`) FROM `visit_today` WHERE `time` < '$today_time'),
(SELECT COUNT(*) FROM `visit_today` WHERE `time` < '$today_time'),'$last_day')");
db::query('DELETE FROM `visit_today` WHERE `time` < ' . $today_time );
}
}
}
// запись о переходах на сайт
if ( isset( $_SERVER['HTTP_REFERER'] ) && !preg_match( '#' . preg_quote( $_SERVER['HTTP_HOST'] ) . '#', $_SERVER['HTTP_REFERER'] ) && $ref = @parse_url( $_SERVER['HTTP_REFERER'] ) ) {
if ( isset( $ref['host'] ) )
$_SESSION['http_referer'] = $ref['host'];
}
if ( !isset( $hard_process ) ) {
$q = db::query("SELECT * FROM `cron` WHERE `id` = 'everyday'");
if ( $q->fetch_row() == 0 )
db::query("INSERT INTO `cron` (`id`, `time`) VALUES ('everyday', '" . time() . "')");
$everyday = $q->fetch_assoc();
if ( $everyday['time'] == NULL || $everyday['time'] < time() - 60 * 60 * 24 ) {
$hard_process = true;
if ( function_exists( 'set_time_limit' ) )
@set_time_limit( 600 ); // Ставим ограничение на 10 минут
db::query("UPDATE `cron` SET `time` = '" . time() . "' WHERE `id` = 'everyday'");
db::query("DELETE FROM `guests` WHERE `date_last` < '" . ( time() - 600 ) . "'");
db::query("DELETE FROM `chat_post` WHERE `time` < '" . ( time() - 60 * 60 * 24 ) . "'"); // удаление старых постов в чате
db::query("DELETE FROM `user` WHERE `activation` != null AND `time_reg` < '" . ( time() - 60 * 60 * 24 ) . "'"); // удаление неактивированных аккаунтов
// удаляем все контакты, помеченные на удаление более месяца назад
$qd = db::query("SELECT * FROM `users_konts` WHERE `type` = 'deleted' AND `time` < " . ( $time - 60 * 60 * 24 * 30 ) );
while ( $deleted = $qd->fetch_array() ) {
db::query( "DELETE FROM `users_konts` WHERE `id_user` = '$deleted[id_user]' AND `id_kont` = '$deleted[id_kont]'");
if ( db::count("SELECT COUNT(*) FROM `users_konts` WHERE `id_kont` = '$deleted[id_user]' AND `id_user` = '$deleted[id_kont]'") == 0 ) {
// если юзер не находится в контакте у другого, то удаляем и все сообщения
db::query("DELETE FROM `mail` WHERE `id_user` = '$deleted[id_user]' AND `id_kont` = '$deleted[id_kont]' OR `id_kont` = '$deleted[id_user]' AND `id_user` = '$deleted[id_kont]'");
}
}
$tab = db::query( 'SHOW TABLES FROM ' . $set['mysql_db_name']);
for ( $i = 0; $i < $tab->fetch_row(); $i++ ) {
db::query("OPTIMIZE TABLE `" . mysql_tablename( $tab, $i ) . "`"); // оптимизация таблиц
}
}
}