أنا أدير منتدى صغيرًا عمره أسبوع واحد، وقمت بتحديثه إلى الإصدار الحالي، ولا أزال ألاحظ هذا السلوك الغريب جدًا. لا يبدو أن أرقام التنبيهات (مثل “جديد”) تتوافق مع أي أرقام حقيقية، وتتغير بشكل عشوائي.
لم يتم كتم أي شيء، ولا يزال هذا يحدث حتى مع وجود نشاط جديد في المنتدى. لا تتردد في إنشاء حساب إذا كنت ترغب في رؤية ذلك بنفسك. (لم أقم بالتحقق فعليًا مما إذا كان الآخرون يرون هذا أم أنه فريد لحسابي.)
هل تستخدم Cloudflare أو شبكة توصيل محتوى (CDN) مماثلة؟ لقد لاحظت بعض التأخير في الإشعارات مع Cloudflare، حتى مع إيقاف التسريع. على سبيل المثال، Rocket Loader.
آه، لقد فاتني هذا… إذن هناك خطأ متسق. هذا يعني أن الخادم يخبر العميل بوجود عدد من المواضيع الجديدة، ولكن عند الدخول إليها، تختفي.
لقد رأيت هذا يحدث من قبل مع المنشورات المجدولة… هل تستخدمها؟ تصحيح هذا الأمر معقد بعض الشيء، فنحن بحاجة إلى الحصول على قائمة معرفات المواضيع (topic_ids) التي يعتقد العميل أنها جديدة.
إذا كان هذا يحدث الآن، فقم بتشغيل الاستعلام التالي:
SELECT
u.id AS user_id,
topics.id AS topic_id,
topics.created_at,
highest_staff_post_number highest_post_number,
last_read_post_number,
c.id AS category_id,
tu.notification_level
FROM topics
JOIN users u on u.id = 1
JOIN user_stats AS us ON us.user_id = u.id
JOIN user_options AS uo ON uo.user_id = u.id
JOIN categories c ON c.id = topics.category_id
LEFT JOIN topic_users tu ON tu.topic_id = topics.id AND tu.user_id = u.id
LEFT JOIN category_users ON category_users.category_id = topics.category_id AND category_users.user_id = 1
WHERE u.id = 1 AND
topics.archetype <> 'private_message' AND
((1=0) OR ("topics"."deleted_at" IS NULL AND topics.created_at >= GREATEST(CASE
WHEN COALESCE(uo.new_topic_duration_minutes, 2880) = -1 THEN u.created_at
WHEN COALESCE(uo.new_topic_duration_minutes, 2880) = -2 THEN COALESCE(u.previous_visit_at,u.created_at)
ELSE ('2020-05-13 00:36:29.100619'::timestamp - INTERVAL '1 MINUTE' * COALESCE(uo.new_topic_duration_minutes, 2880))
END, us.new_since, '2020-05-07 14:46:17') AND tu.last_read_post_number IS NULL AND COALESCE(tu.notification_level, 2) >= 2 AND topics.created_at > '2020-05-07 14:46:17' AND (category_users.last_seen_at IS NULL OR topics.created_at > category_users.last_seen_at))) AND
topics.deleted_at IS NULL AND
NOT (
last_read_post_number IS NULL AND
COALESCE(category_users.notification_level, 1) = 0
)
UNION ALL
SELECT
u.id AS user_id,
topics.id AS topic_id,
topics.created_at,
highest_staff_post_number highest_post_number,
last_read_post_number,
c.id AS category_id,
tu.notification_level
FROM topics
JOIN users u on u.id = 1
JOIN user_stats AS us ON us.user_id = u.id
JOIN user_options AS uo ON uo.user_id = u.id
JOIN categories c ON c.id = topics.category_id
LEFT JOIN topic_users tu ON tu.topic_id = topics.id AND tu.user_id = u.id
LEFT JOIN category_users ON category_users.category_id = topics.category_id AND category_users.user_id = 1
WHERE u.id = 1 AND
topics.updated_at >= us.first_unread_at AND
topics.archetype <> 'private_message' AND
(("topics"."deleted_at" IS NULL AND tu.last_read_post_number < topics.highest_staff_post_number AND COALESCE(tu.notification_level, 1) >= 2) OR (1=0)) AND
topics.deleted_at IS NULL AND
NOT (
last_read_post_number IS NULL AND
COALESCE(category_users.notification_level, 1) = 0
)
مع استبدال user_id = 1 بمعرف المستخدم الخاص بك (يمكنك العثور عليه بتشغيل select id, username from users where username = 'yourusername').
إذا كان هذا يحدث، هل يمكنك تثبيت أداة استكشاف البيانات (Data Explorer) ومعرفة ما يحدث.
هل هناك أي إضافات مخصصة؟ هل أنت على فرع الاختبار التجريبي (beta) أم الفرع الذي اجتاز الاختبارات (tests-passed)؟ إذا كنت على الفرع التجريبي، يرجى التبديل إلى الفرع الذي اجتاز الاختبارات مؤقتًا.
أنا أعمل على الإصدار 2.5.0.beta4، وقد وصلت إليها بعد عملية تثبيت قياسية وتشغيل الترقيات التي طُلبت مني.
لا أعرف كيفية التبديل إلى فرع محدد، كما أن ذلك يبدو محفوفًا بالمخاطر، نظرًا لأن أحد نتائج البحث القليلة عند محاولة معرفة كيفية القيام بذلك كانت لشخص فشل في عمليات ترحيل قاعدة بيانات بينما كان يحاول ذلك.
للتوضيح، في الحالة الحالية، عندما أفتح الصفحة الرئيسية أرى “جديد (1)”، وعند النقر على “جديد (1)” لا أرى أي منشورات جديدة. عند العودة إلى الصفحة الرئيسية تختفي علامة “جديد (1)”، وعند إعادة تحميل الصفحة تظهر مرة أخرى.
أوه، صحيح، آسف. هل يمكنك التأكيد على أن مستكشف البيانات لا يزال معطلاً بعد تفعيله في إعدادات الموقع؟ كما يمكنكَ تجربة متصفح آخر (Firefox/Chrome) لمعرفة ما إذا كانت رسالة خطأ صندوق العمل مستمرة.
سأقوم بالتعامل مع مشكلة مستكشف البيانات لاحقًا، فأنا لا أريد إعادة بناء المنتدى باستمرار وإيقافه في كل مرة. سأقوم بتشغيل الاستعلامات مباشرة من سطر الأوامر.
حسنًا، هذا مثير للاهتمام. هل يمكنك الانتقال إلى الموضوع 31؟ هل هناك شيء غريب بشأنه؟ هذا موضوع غير مقروء (رقم آخر منشور مقروء هو 3)… تشير الاستعلامات إلى أننا نعتقد أن لديك منشورين جديدين ومنشورًا واحدًا غير مقروء.
ما زلت أعتقد أن هناك شيئًا ما يحدث على جانب العميل لديك متعلقًا بذاكرة التخزين المؤقت لـ Web Worker.
هل تستخدم Chrome أم Firefox… هل يمكنك تجربة المتصفح الآخر… هل يمكنك تجربة متصفحك في وضع التصفح المتخفي بدون أي إضافات؟