ล้าง database และ temp ไฟล์ใน magento

พอดีทางฮาวโฮสเราได้มีโอกาสดูแลเว็บไซต์ proplugin.com ซึ่งเป็นเว็บ e-commerce ที่สร้างมาจาก magento และมีข้อมูลสินค้ามากมายซึ่งถือว่าเว็บนี้เป็นเว็บที่ใหญ่พอตัวเลยทีเดียว

ซึ่งปัญหาที่เกิดขึ้นก็คือ database ของตัวเว็บนั้นใหญ่โตมากขนาดประมาณเกือบ 700 mb ตรวจสอบพบว่า table พวก log_ จะมีขนาดใหญ่เกินผิดปกติ ผมก็เลยลองหาวิธีเคลียร์ database ให้มันเล็กมา และก็ได้ไปเจอ script ตัวหนึ่งน่าสนใจมากครับ

ให้เราทำการสร้างไฟล์ชื่อ cleanup.php ไว้ที่ root directory ของ magento ใส่โด็ดด้านล่างลงไป

$db['host'] = '';                    // Database hostname
$db['name'] = '';                    // Database name
$db['user'] = '';                    // Database username
$db['pass'] = '';                    // Database password
$db['pref'] = '';                    // Database tables' prefix

if($_GET['clean'] == 'log') clean_log_tables();
if($_GET['clean'] == 'var') clean_var_directory();

function clean_log_tables() {
    global $db;

    $tables = array(
        'log_url',
        'log_url_info',
        'log_visitor',
        'log_visitor_info'
    );

    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.'`') or die(mysql_error());
    }
}

function unlinkRecursive($dir)
{
    if(!$dh = @opendir($dir))
        {
        return;
    }
    while (false !== ($obj = readdir($dh)))
    {
        if($obj == '.' || $obj == '..')
        {
            continue;
        }

        if (!@unlink($dir . '/' . $obj))
        {
        unlinkRecursive($dir.'/'.$obj, true);
        }}

closedir($dh);
return;
} 

function clean_var_directory() {

$dirs = array(
     'var/log/',
     'var/report/',
     'var/session/',
     'var/tmp/',
     'downloader/pearlib/cache/',
     'downloader/pearlib/download/'
);

    foreach($dirs as $v => $k) {
	echo "
<strong>DELETING CONTENT OF : </strong>". ($k);
	unlinkRecursive($k);
    }
}

echo "Finished!";

ค่า database hostname, database name, database username, database pass แก้ไขตามที่เราใช้งานนะครับ จากนั้นถ้าเราจะใช้งานก็พิมพ์ urlดังนี้
http://domain.com/cleanup.php?clean=log << ไว้สำหรับล้าง log ใน database หรือ
http://domain.com/cleanup.php?clean=var << ไว้สำหรับลบไฟล์ var/cache, var/log เป็นต้น

หลังจากผมลองล้าง database ดูพบว่าขนาดลดลงไปเหลือ 300mb เองครับ แจ่มจริงๆใช้ดีเลยบอกต่อ

thank : http://www.magentocommerce.com/boards/viewthread/36148/#t117754

บทความแนะนำ
    blog comments powered by Disqus