import pymysql
import time

# === تنظیمات ===
DB_HOST = 'localhost'
DB_USER = 'filimo_new'
DB_PASS = 'A&jH*#![Af!p{y@v'
DB_NAME = 'filimo_new'
TABLE_PREFIX = 'wp_'

conn = pymysql.connect(host=DB_HOST, user=DB_USER, password=DB_PASS, database=DB_NAME, charset='utf8mb4')
cur = conn.cursor()

print("=== شروع پاک‌سازی جدول‌های سنگین ===\n")

# ۱. پاک کردن session_tokens قدیمی از wp_usermeta (بزرگ‌ترین مقصر)
print("پاک کردن session_tokens قدیمی از wp_usermeta ...")
cur.execute(f"""
    DELETE FROM {TABLE_PREFIX}usermeta 
    WHERE meta_key = 'session_tokens' 
      AND meta_value LIKE '%"expiration"%' 
      AND JSON_EXTRACT(meta_value, '$[*].expiration') < UNIX_TIMESTAMP() - 2592000;  -- قدیمی‌تر از ۳۰ روز
""")
print(f"→ {cur.rowcount:,} ردیف session حذف شد.")

# ۲. پاک کردن متاهای غیرضروری wp_usermeta (Yascode/VIP و غیره)
print("پاک کردن متاهای غیرضروری wp_usermeta ...")
cur.execute(f"""
    DELETE FROM {TABLE_PREFIX}usermeta 
    WHERE meta_key IN (
        'last_login', 'wp_capabilities', 'wp_user_level', 
        'dismissed_wp_pointers', 'community-events-location',
        'yascode_%', 'wp_yascode_%'   -- متاهای پلاگین Yascode
    );
""")
print(f"→ {cur.rowcount:,} ردیف متای اضافی حذف شد.")

# ۳. پاک کردن transients و cron از wp_options (دوباره)
print("ریست wp_options و پاک transients ...")
cur.execute(f"DELETE FROM {TABLE_PREFIX}options WHERE option_name LIKE '_transient_%' OR option_name LIKE '_site_transient_%';")
cur.execute(f"UPDATE {TABLE_PREFIX}options SET option_value = 'a:0:{{}}' WHERE option_name = 'cron';")
print("→ transients و cron ریست شد.")

# ۴. پاک کردن visitor و pages قدیمی WP Statistics (۹۰ روز)
print("پاک کردن داده‌های قدیمی WP Statistics (۹۰ روز قبل) ...")
old_date = int(time.time()) - 7776000  # ۹۰ روز
cur.execute(f"DELETE FROM {TABLE_PREFIX}statistics_visitor WHERE last_counter < FROM_UNIXTIME({old_date});")
cur.execute(f"DELETE FROM {TABLE_PREFIX}statistics_pages WHERE date < DATE_SUB(NOW(), INTERVAL 90 DAY);")
print(f"→ داده‌های قدیمی statistics پاک شد.")

# ۵. بهینه‌سازی نهایی تمام جدول‌های بزرگ
print("بهینه‌سازی جدول‌ها (OPTIMIZE) ...")
for tbl in ['usermeta', 'postmeta', 'options', 'statistics_visitor', 'statistics_pages', 'statistics_visitor_relationships']:
    cur.execute(f"OPTIMIZE TABLE {TABLE_PREFIX}{tbl};")
    print(f"→ {TABLE_PREFIX}{tbl} بهینه شد.")

conn.commit()
cur.close()
conn.close()

print("\n✅ پاک‌سازی تمام شد! حالا جدول‌ها خیلی کوچکتر شدن.")
print("سایت را تست کن و اگر CPU هنوز بالا رفت، خروجی htop یا slow.log را بفرست.")
