• هاست سان
  • با خرید اشتراک ویژه شما میتوانید جدیدترین آپدیت افزونه ها و قالب های زیبا و پرکاربرد زنفورو را دریافت کنید!

    هر ماه یک کد تخفیف 60 درصدی محصولات فروشگاه به کاربران منتخب بخش ویژه اهدا می‌شود

Attachment Integrity Check (CLI)

افزونه 2 Attachment Integrity Check (CLI) 1.0.0

دسترسی دریافت را ندارید
Attachment Integrity Check (CLI)
نمای کلی منبع
حذف کردن پیوست‌هایی که فایل ذخیره‌شده‌شان مفقود شده است، پیدا و تعمیر کنید و به‌صورت ایمن .
King توسط King Stable
1.0.0 نسخه
0 دریافت‌ها
45 بازدیدها
— رتبه‌بندی
اولین انتشار
آخرین بروزرسانی
سازگاری
توسط نویسنده مشخص نشده است
توسعه‌دهنده
King
King
تاریخ عضویت: ارسالی‌ها: 1,528 واکنش‌ها: 1,809
پشتیبانی از نسخه های
  1. 2.3
نیاز به ویرایش مجوزهای گروه‌های کاربری
  1. نیست
مورد نیاز اضافی
  • دسترسی SSH یا خط فرمان؛ اجرای اسکریپت از طریق HTTP امکان‌پذیر نیست.
  • PHP نسخهٔ ۸.۰ یا بالاتر؛ همان نسخه‌ای که نصب زنفورو به آن نیاز دارد.
  • وجود ستون file_key در جدول xf_attachment_data. اسکریپت هنگام شروع این مورد را بررسی می‌کند و اگر ستون وجود نداشته باشد، به‌جای حدس زدن مسیر فایل‌ها، اجرا را متوقف می‌کند.
  • هنگام استفاده از گزینهٔ --index، حدود ۱۰۰ مگابایت حافظهٔ RAM به‌ازای هر ۵۰٬۰۰۰ فایل پیوست مورد نیاز است.
  • سازگار با ذخیره‌سازی محلی و همچنین آداپتورهای Flysystem برای ذخیره‌سازی راه دور یا خارج از سرور، مانند S3 و R2.
  • نیازی به نصب افزونه ندارد؛ کافی است اسکریپت مستقل را در پوشهٔ اصلی نصب انجمن زنفورو قرار دهید.
بررسی یکپارچگی فایل‌های پیوست

وقتی فایل مربوط به یک پیوست حذف می‌شود، اما رکورد آن در پایگاه داده باقی می‌ماند، زنفورو همچنان پیوند آن پیوست را نمایش می‌دهد. با کلیک روی پیوند، خطای ۵۰۰ رخ می‌دهد و گزارش خطاها با پیام‌هایی مانند نمونهٔ زیر پر می‌شود:

کد خطا:
کد:
League\Flysystem\FileNotFoundException: File not found at path: attachments/236/236888-0dcb....data

src/XF/Pub/View/Attachment/View.php:27
زنفورو به‌صورت پیش‌فرض راهی برای پیدا کردن انبوه این موارد ندارد. همچنین نمی‌توان به‌آسانی تشخیص داد که یک پیوست واقعاً از بین رفته است یا فایل آن همچنان در فضای ذخیره‌سازی وجود دارد، اما کلید ذخیره‌سازی آن قدیمی شده است.

این مشکل ممکن است پس از بازیابی پایگاه داده، انتقال فضای ذخیره‌سازی، ناموفق بودن همگام‌سازی با S3 یا R2، بازیابی ناقص نسخهٔ پشتیبان یا انباشته شدن حذف‌های ناموفق طی چندین سال رخ دهد.

این​

هر پیوست در یکی از سه وضعیت زیر طبقه‌بندی می‌شود:

  • OK — سالم: فایل دقیقاً در مسیری وجود دارد که زنفورو انتظار دارد.
  • RELINK — قابل اتصال مجدد: فایل در مسیر مورد انتظار وجود ندارد، اما فایلی با همان data_id و یک file_key متفاوت پیدا شده است که مقدار md5 آن با file_hash ذخیره‌شده مطابقت دارد. فایل بارگذاری‌شده سالم است و فقط ارجاع پایگاه داده به آن قدیمی شده است. این وضعیت بدون از دست رفتن داده قابل اصلاح است.
  • MISSING — مفقود: هیچ فایلی وجود ندارد، یا فایل پیدا‌شده مقدار md5 متفاوتی دارد. این تفاوت می‌تواند به این معنی باشد که شناسه در بارگذاری جدیدتری دوباره استفاده شده و فایل فعلی متعلق به شخص دیگری است. در این حالت، چیزی برای بازیابی وجود ندارد.
بررسی md5 اهمیت زیادی دارد. اگر اتصال مجدد فقط بر اساس نام فایل انجام شود، ممکن است تصویر متعلق به فرد دیگری به‌اشتباه در یکی از ارسال‌های کاربران قرار بگیرد.

سه​

  • Scan — اسکن: پایگاه داده را بررسی می‌کند و می‌پرسد «فایل کجاست؟» سپس گزارش را در قالب CSV ذخیره می‌کند. این حالت فقط خواندنی است.
  • Orphans — فایل‌های یتیم: برعکس حالت اسکن عمل می‌کند؛ فضای ذخیره‌سازی را بررسی می‌کند و می‌پرسد «این فایل متعلق به کدام رکورد است؟». به این ترتیب، فایل‌هایی را پیدا می‌کند که پس از بازگردانی پایگاه داده به نسخه‌ای قدیمی‌تر، بدون رکورد باقی مانده‌اند و اسکن معمولی قادر به شناسایی آن‌ها نیست. این حالت نیز فقط خواندنی است.
  • Apply — اعمال تغییرات: گزارش CSV اسکن را دریافت می‌کند، هر ردیف را دوباره با فضای ذخیره‌سازی تطبیق می‌دهد و سپس اصلاحات را انجام می‌دهد. حذف فقط در صورت درخواست صریح شما انجام می‌شود.

نحوهٔ​

اسکریپت را در پوشهٔ اصلی انجمن، کنار فایل index.php قرار دهید. سپس دستور زیر را اجرا کنید:

کد:
php xf-missing-attachments.php --index --report=scan.csv
این دستور فقط اطلاعات را بررسی می‌کند و هیچ تغییری ایجاد نمی‌کند.

گزینهٔ --index یک بار فهرست بازگشتی فضای ذخیره‌سازی را تهیه می‌کند و پاسخ تمام جست‌وجوها را از حافظه ارائه می‌دهد. در فضای ذخیره‌سازی راه دور، این کار می‌تواند حدود ۲۰۰ هزار رفت‌وبرگشت شبکه را به حدود ۲۰۰ درخواست فهرست‌گیری کاهش دهد.

گزارش CSV را بررسی کنید. سپس از جداول مربوط به پیوست‌ها نسخهٔ پشتیبان بگیرید:

کد:
mysqldump YOUR_DB xf_attachment xf_attachment_data > attach-backup.sql
اصلاح بدون حذف هیچ رکوردی:

کد:
php xf-missing-attachments.php --apply=scan.csv --index
اصلاح و پاک‌سازی رکوردهای مربوط به فایل‌های ازبین‌رفته:

کد:
php xf-missing-attachments.php --apply=scan.csv --index --delete

ملاحظات​

از آنجا که این ابزار قابلیت حذف رکوردهای پایگاه داده را دارد، با این فرض طراحی شده است که ممکن است تشخیص آن اشتباه باشد.

  • اسکن هیچ تغییری ایجاد نمی‌کند. حذف به اجرای جداگانه، گزینه‌ای مستقل و یک فایل CSV نیاز دارد که پیش از اجرا فرصت بررسی آن را داشته‌اید.
  • هر رکورد درست پیش از اعمال تغییر، دوباره با فضای ذخیره‌سازی واقعی بررسی می‌شود. بنابراین، یک فایل CSV قدیمی یا ویرایش‌شده به‌صورت دستی نمی‌تواند به‌تنهایی باعث آسیب شود.
  • اگر فهرست فضای ذخیره‌سازی خالی باشد، اجرا متوقف می‌شود. اگر فضای ذخیره‌سازی در دسترس نباشد یا پیشوند مسیر اشتباه تنظیم شده باشد، همهٔ رکوردها به‌اشتباه در وضعیت MISSING قرار می‌گیرند. این وضعیت بحرانی است و گزینهٔ --force نیز آن را نادیده نمی‌گیرد.
  • محدودیت نسبت حذف: اگر برنامه بخواهد بیش از ۲۰ درصد تمام پیوست‌ها را حذف کند، عملیات رد می‌شود؛ چنین الگویی بیشتر نشان‌دهندهٔ خرابی فضای ذخیره‌سازی است تا از دست رفتن واقعی داده‌ها.
  • محدودیت تعداد حذف: گزینهٔ --max-delete با مقدار پیش‌فرض 2000 از اجرای برنامه‌هایی با تعداد حذف غیرمنتظره جلوگیری می‌کند.
  • حذف از طریق لایهٔ موجودیت‌ها انجام می‌شود. به این ترتیب، شمارندهٔ attach_count توسط مدیریت‌کنندهٔ پیوست زنفورو به‌روزرسانی می‌شود؛ این موضوع انواع محتوا، از جمله محتوای افزونه‌های دیگر، را نیز در بر می‌گیرد.
  • آرگومان‌های ناشناخته رد می‌شوند و بی‌سروصدا نادیده گرفته نخواهند شد.
  • گزارش‌ها در مسیر قابل دسترسی از طریق وب ذخیره نمی‌شوند. این گزارش‌ها اطلاعات تمام پیوست‌های انجمن را در بر دارند و در مسیر داخلی internal_data/attachment-audit/ ذخیره می‌شوند.
  • اجرای اسکریپت از طریق HTTP ممنوع است.

​

  • لایک
واکنش‌ها[ی پسندها]: Mehdi
نویسنده
King
دریافت‌ها
0
بازدیدها
45
اولین انتشار
آخرین بروزرسانی

رتبه‌بندی‌ها

0.00 ستاره 0 رتبه‌بندی

فایل‌های بیشتری از King

فایل‌های مشابه

Attachment Improvements By Xon King
مجموعه ابزار برای بهبود سیستم پیوست
دریافت‌ها
0
به‌روزرسانی شده
D.C Style - Attachment View for XF2 XFFA.IR Bot
دسترسی مشاهده فایل های ضمیمه خاص به مهمان ها
دریافت‌ها
0
به‌روزرسانی شده
[XFA] Like Or Reply To View Attachment - XF2 King
مخفی کردن پیوست ها با لایک یا ارسال پاسخ.
دریافت‌ها
1
به‌روزرسانی شده
AndyB Country Access Check King
مسدود کردن دسترسی به صفحات تماس با ما، ورود و ثبت نام از کشورهای مشخص شده.
دریافت‌ها
2
به‌روزرسانی شده
AndyB Duplicate account check nima
تشخیص کاربران با حساب های تکراری
دریافت‌ها
5
به‌روزرسانی شده
AndyB Keyword Check XFFA.IR Bot
ارسال ایمیل به مدیران زمانی که یک پست شامل کلمات کلیدی خاص ایجاد شود.
دریافت‌ها
0
به‌روزرسانی شده
AndyB Keyword check conversations King
مطلع کردن مدیران از مکالمات حاوی کلمات کلیدی خاصی.
دریافت‌ها
0
به‌روزرسانی شده
AndyB Register email check King
محدود کردن ایمیل های ثبت نام کاربران در دوره های متفاوت.
دریافت‌ها
0
به‌روزرسانی شده
AndyB Secondary group check King
مجاز کردن انتخاب گروه کاربر ثانویه و نمایش تنظیمات مرتبط.
دریافت‌ها
1
به‌روزرسانی شده
AndyB Thread check Dariush
دریافت‌ها
0
به‌روزرسانی شده
AndyB User group check Dariush
دریافت‌ها
0
به‌روزرسانی شده
Check Tables King
بررسی جدول های دیتابیس در پنل مدیریت.
دریافت‌ها
1
به‌روزرسانی شده
Proxy Check Dariush
دریافت‌ها
7
به‌روزرسانی شده
چک کردن ایمیل هنگام ثبت نام کاربر
دریافت‌ها
0
به‌روزرسانی شده
[OzzModz] Ignore Files From Health Check King
نادیده گرفتن فایل‌های خود ویرایش‌شده از بررسی سلامت
دریافت‌ها
0
به‌روزرسانی شده
عقب
بالا