Вопрос

Есть вариант для очистки журнала под system->config->sytem->log cleaning. Анкет Очищает ли это таблицы журналов или файлы под var/log. Анкет Если я включите очистку журнала, как найти, когда и какие журналы очищены?

Это было полезно?

Решение

Magento по умолчанию не очищает все, как упомянуто Тимом.

Проверьте мой подробный ответ Как мне обрабатывать файлы сеансов, которые становятся слишком многочисленными?. Анкет Он включает в себя файл обслуживания, который может быть автоматизирован с использованием заданий Cron.

Источник: Как мне обрабатывать файлы сеансов, которые становятся слишком многочисленными?

Во всех наших настройках у нас есть файл maintains.php, который время от времени заботится о очистке журналов и WAR Directory. Поскольку сеансы должны быть сохранены в базе данных или в файловой системе, этот файл обслуживания очистит их обоих. (См. Код ниже).

Вы можете запустить следующую команду в качестве задания Cron, чтобы очистить журналы:

php maintenance.php clean=log

Приведенная выше команда будет создавать следующий выход:

catalogindex_aggregation has been truncated
catalogindex_aggregation_tag has been truncated
catalogindex_aggregation_to_tag has been truncated
catalog_compare_item has been truncated
dataflow_batch_export has been truncated
dataflow_batch_import has been truncated
log_customer has been truncated
log_quote has been truncated
log_summary has been truncated
log_summary_type has been truncated
log_url has been truncated
log_url_info has been truncated
log_visitor has been truncated
log_visitor_info has been truncated
log_visitor_online has been truncated
report_compared_product_index has been truncated
report_event has been truncated
report_viewed_product_index has been truncated

Вы можете запустить следующую команду в качестве задания Cron, чтобы очистить папку VAR:

php maintenance.php clean=var

Приведенная выше команда будет создавать следующий выход:

downloader/.cache/* has been emptied
downloader/pearlib/cache/* has been emptied
downloader/pearlib/download/* has been emptied
var/cache/ has been emptied
var/locks/ has been emptied
var/log/ has been emptied
var/report/ has been emptied
var/session/ has been emptied
var/tmp/ has been emptied

Фактический код (не забудьте настроить путь к вашему файлу local.xml):

<?php
$xml = simplexml_load_file('./app/etc/local.xml', NULL, LIBXML_NOCDATA);

$db['host'] = $xml->global->resources->default_setup->connection->host;
$db['name'] = $xml->global->resources->default_setup->connection->dbname;
$db['user'] = $xml->global->resources->default_setup->connection->username;
$db['pass'] = $xml->global->resources->default_setup->connection->password;
$db['pref'] = $xml->global->resources->db->table_prefix;

if (!isset($argv[1]) || !stristr($argv[1], 'clean=')) {
    echo 'Please use one of the commands below:' . PHP_EOL;
    echo 'php maintenance.php clean=log' . PHP_EOL;
    echo 'php maintenance.php clean=var' . PHP_EOL;
    die;
}

$method = str_replace('clean=', '', $argv[1]);

switch ($method) {
case 'log':
    clean_log_tables();
    break;
case 'var':
    clean_var_directory();
    break;
default:
    echo 'Please use one of the commands below:' . PHP_EOL;
    echo 'php maintenance.php clean=log' . PHP_EOL;
    echo 'php maintenance.php clean=var' . PHP_EOL;
    break;
}

function clean_log_tables() {
    global $db;

    $tables = array(
        'catalogindex_aggregation',
        'catalogindex_aggregation_tag',
        'catalogindex_aggregation_to_tag',
        'catalog_compare_item',
        'dataflow_batch_export',
        'dataflow_batch_import',
        'log_customer',
        'log_quote',
        'log_summary',
        'log_summary_type',
        'log_url',
        'log_url_info',
        'log_visitor',
        'log_visitor_info',
        'log_visitor_online',
        'report_compared_product_index',
        'report_event',
        'report_viewed_product_index'
    );

    mysql_connect($db['host'], $db['user'], $db['pass']) or die(mysql_error());
    mysql_select_db($db['name']) or die(mysql_error());

    foreach($tables as $v => $k) {
        @mysql_query('TRUNCATE `'.$db['pref'].$k.'`');
        echo $db['pref'] . $k . ' has been truncated' . PHP_EOL;
    }
}

function clean_var_directory() {
    $dirs = array(
        'downloader/.cache/*',
        'downloader/pearlib/cache/*',
        'downloader/pearlib/download/*',
        'var/cache/',
        'var/locks/',
        'var/log/',
        'var/report/',
        'var/session/',
        'var/tmp/'
    );

    foreach($dirs as $v => $k) {
        exec('rm -rf '.$k);
        echo $k . ' has been emptied' . PHP_EOL;
    }
}

Другие советы

По умолчанию Magento очищает только следующие таблицы:

log_quote
log_url
log_visitor_info
log_visitor
log_url_info
log_customer

Которые на самом деле не все ^log* столы.

var/log каталог не очищен. Я думаю, что причина в том, что было бы ужасно попытаться определить, какие записи журналов истек и должны быть удалены.

Однако вы можете делать все, что вам нравится, наблюдая за log_log_clean_before, или же log_log_clean_after События и запуск чего -то вроде:

$dirs = array(
    'downloader/.cache/*',               // MagentoConnect 2.0
    'downloader/pearlib/cache/*',        // MagentoConnect 1.0
    'downloader/pearlib/download/*',     // MagentoConnect 1.0
    'var/cache/',
    'var/log/',
    'var/report/',
    'var/tmp/'
);

exec('rm -rf ' . implode(' ', $dirs));

Используя этот путь, вы должны вручную очистить журнал или автоматически:

Система> Конфигурация> Advanced> System> Очистка журнала

У Magento нет какого -либо класса для управления своими файлами VAR/журнала, только написание.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top