أواجه مشكلة في مجتمعي. لا أستطيع “حذف جميع المنشورات” لبعض المستخدمين. ما أستنتجه هو أن المشكلة تحدث فقط للحسابات القديمة التي تحتوي على عدد كبير من المنشورات. الحسابات الأحدث لا تواجه هذه المشكلة.
لقد راجعت إعدادات الموقع وزدت الحد المسموح به لحذف جميع المنشورات إلى 10,000.
أحاول حاليًا حذف مستخدم لديه حوالي 900 منشور. المستخدم لا يريد إخفاء هويته ويهدد باتخاذ إجراء قانوني إذا لم تتم إزالة حسابه ومنشوراته. عندما أضغط على زر حذف الكل، تظهر هذه الرسالة بعد دقيقة تقريبًا:
لقد كتبت تطبيقًا صغيرًا يستدعي واجهة برمجة التطبيقات (API) الخاصة بـ Discourse على تثبيتاتي. يقوم بحذف كل منشور على حدة بدلاً من الحذف الدفعي. لذا، بالنسبة لـ 700 منشور، سيقوم بإجراء 700 استدعاء لواجهة برمجة التطبيقات. ليست الطريقة الأكثر كفاءة، لكنها كانت مفيدة.
أرى أن هناك 20 منشورًا مشكلة. يبدو أن وظيفة “الحذف الكل” تتوقف بمجرد وصولها إلى أحد هذه المنشورات ولا يمكنها حذفها. لم تتمكن واجهة برمجة التطبيقات من حذف هذه المنشورات لسبب ما. قمت بحذف معظمها يدويًا الآن من خلال الدخول إلى المنشور والضغط على زر الحذف كما يفعل المشرف عادةً.
لا يزال هناك حوالي 5 منشورات لا يمكنني حذفها، سواء عبر واجهة برمجة التطبيقات أو بالطريقة العادية. لا أرى أي تشابه بينها. بعضها موجود في مواضيع ضخمة، والبعض الآخر في مواضيع صغيرة. بعضها ردود، وبعضها يحتوي على إعجابات وصور، والبعض الآخر لا يحتوي على ذلك. عندما أحاول حذفها عبر واجهة المستخدم القياسية، يظهر لي هذا مربع حوار الخطأ:
أبلغ بعض المستخدمين عن ظهور نفس مربع الحوار عند محاولة حذف منشوراتهم الخاصة. افترضت أن السبب يعود إلى مشكلة في الاتصال أو شيء مشابه، نظرًا لأن معظمهم يستخدمون الهواتف المحمولة، لكن قد يكون الأمر مختلفًا.
جميع المنشورات الخمسة المشكلة تقع ضمن موضوعين كبيرين. أغلقناهما مؤخرًا لأنهما أصبحا كبيرين جدًا. يحتوي أحد الموضوعين على 55 ألف منشور، بينما يحتوي الآخر على 17 ألف منشور. أظن أن هناك الكثير من المعالجة التي تتم عند حذف منشور ضمن موضوع بهذا الحجم، مما يتسبب في نوع من انتهاء المهلة، لكن هذا مجرد تخمين.
بشكل عام، تُحذف المنشورات في Discourse بشكل ناعم (soft-deleted) ولا تُحذف بشكل نهائي (hard-deleted). باستخدام الأمر destroy، قمت بحذفها من قاعدة البيانات فقط، وقد طلبت منك استخدامه لأن المنشورات التي كنت تحاول حذفها كانت تابعة لمواضيع طويلة للغاية.
أنا لا أنصح باستخدام هذه الطريقة سواء للمنشورات أو للمواضيع. لا يمكن استعادتها أبدًا، وسأفهم أنك تعمل على قاعدة بيانات لموقع قيد التشغيل، مع خطر تعطيل الموقع بالكامل إذا حدث أي خطأ. ومع ذلك، إذا كنت ترغب في استخدام أمر destroy، فأنت حر في ذلك. يجب عليك دائمًا إنشاء نسخة احتياطية إذا كنت تنوي استخدام أوامر من هذا النوع.
شكرًا لك على النصيحة. الأمر يتوافق مع ما توقعت، وسأستخدم أمر الحذف فقط كحل أخير.
بما أن الحذف يكون عادةً ناعمًا للمشاركات، يبدو أنه يقوم بكتابة العديد من العناصر الأخرى بدلاً من مجرد حذف السجل. هل هذا ربما هو السبب في أنه لا يعمل بشكل جيد عند حذف المشاركات من موضوع ضخم؟ هل هناك الكثير من المهام مما يؤدي إلى انتهاء مهلة التنفيذ؟
أتمنى وجود طريقة لحل هذه المشكلة دون اللجوء إلى أمر وحدة التحكم المحفوف بالمخاطر.
شكرًا لك. لقد قمت بتغيير الحد الأقصى للمواضيع إلى 2500. طلب المستخدمون إزالة هذا الحد منذ فترة، مما أدى إلى ظهور هذه المواضيع الضخمة. غير أن هذه المواضيع الضخمة ليست جيدة للمنتدى. فقد تأثرت أداء الخادم بشكل كبير خلال أوقات الذروة عندما كان عدد كبير من الأشخاص يردون عليها. وقد انتهينا بإغلاقها لمنع تكرار ذلك، لكننا ما زلنا عالقين مع هذه المواضيع الضخمة التي تسبب مشاكل أخرى.
الحل الأبسط هو أن يتولى بعض المشرفين المهمة ويقوموا بتقسيم (ثم إغلاق) المواضيع الضخمة إلى مواضيع متعددة، على سبيل المثال:
[عنوان الموضوع الضخم] الجزء 1
[عنوان الموضوع الضخم] الجزء 2
[عنوان الموضوع الضخم] الجزء 3
[عنوان الموضوع الضخم] الجزء […]
[عنوان الموضوع الضخم] الجزء 10
سيتم ربط كل جزء تلقائيًا بالجزء السابق واللاحق، لذا لن يواجه المستخدمون صعوبات في التنقل، وستحل هذه الخطوة مشكلة الأداء بالتأكيد.
نعم، ستكون هذه مهمة مملة، لكن هذا أيضًا أحد الأسباب التي تجعل وجود موضوع يحتوي على 55 ألفًا أو 17 ألف مشاركة أمرًا غير مجدٍ تمامًا، لأن nobody لن يقرأها.