WP Discourse يؤدي العديد من الطلبات إلى site.json

أعمل على تكامل لأحد العملاء وكان لديّ متابعة لسجلات Discourse أثناء العمل على منتدى Wordpress الخاص بهم.

وهذا ما رأيته يمر (عذرًا على تنسيق السجل غير المعتاد). عنوان IP هو عنوان IP الخاص بخادم Wordpress. إنه يعمل بنظام WP Discourse 2.5.5.

لقد بحثت في الكود ولا يمكنني معرفة سبب حدوث ذلك.

2024-10-23T06:39:30+00:00|67.225.163.100|5857|0.023|200|GET /site.json HTTP/1.1
2024-10-23T06:39:30+00:00|67.225.163.100|5857|0.022|200|GET /site.json HTTP/1.1
2024-10-23T06:39:30+00:00|67.225.163.100|5857|0.020|200|GET /site.json HTTP/1.1
2024-10-23T06:39:31+00:00|67.225.163.100|5857|0.023|200|GET /site.json HTTP/1.1
2024-10-23T06:39:31+00:00|67.225.163.100|5857|0.024|200|GET /site.json HTTP/1.1
2024-10-23T06:39:31+00:00|67.225.163.100|5857|0.020|200|GET /site.json HTTP/1.1
2024-10-23T06:39:31+00:00|67.225.163.100|5857|0.019|200|GET /site.json HTTP/1.1
2024-10-23T06:39:31+00:00|67.225.163.100|5857|0.022|200|GET /site.json HTTP/1.1
2024-10-23T06:39:31+00:00|67.225.163.100|5857|0.021|200|GET /site.json HTTP/1.1
2024-10-23T06:39:32+00:00|67.225.163.100|5857|0.018|200|GET /site.json HTTP/1.1
2024-10-23T06:39:32+00:00|67.225.163.100|5857|0.018|200|GET /site.json HTTP/1.1
2024-10-23T06:39:32+00:00|67.225.163.100|5857|0.021|200|GET /site.json HTTP/1.1
2024-10-23T06:39:33+00:00|67.225.163.100|5857|0.021|200|GET /site.json HTTP/1.1
2024-10-23T06:39:33+00:00|67.225.163.100|5857|0.024|200|GET /site.json HTTP/1.1
2024-10-23T06:39:33+00:00|67.225.163.100|5857|0.020|200|GET /site.json HTTP/1.1
2024-10-23T06:39:33+00:00|67.225.163.100|5857|0.024|200|GET /site.json HTTP/1.1
2024-10-23T06:39:33+00:00|67.225.163.100|5857|0.021|200|GET /site.json HTTP/1.1
2024-10-23T06:39:33+00:00|67.225.163.100|5857|0.022|200|GET /site.json HTTP/1.1
2024-10-23T06:39:34+00:00|67.225.163.100|5857|0.022|200|GET /site.json HTTP/1.1
2024-10-23T06:39:34+00:00|67.225.163.100|5857|0.023|200|GET /site.json HTTP/1.1
2024-10-23T06:39:34+00:00|67.225.163.100|5857|0.021|200|GET /site.json HTTP/1.1
2024-10-23T06:39:34+00:00|67.225.163.100|662|0.012|429|GET /site.json HTTP/1.1
2024-10-23T06:39:34+00:00|67.225.163.100|662|0.014|429|GET /site.json HTTP/1.1
2024-10-23T06:39:34+00:00|67.225.163.100|662|0.011|429|GET /site.json HTTP/1.1
إعجابَين (2)

أتخيل أن الأمر يأتي من هذا الاستدعاء: wp-discourse/lib/plugin-utilities.php at main · discourse/wp-discourse · GitHub

والذي يبدو أنه يُستخدم في 3 حالات:

  • ملء محدد الفئة في بعض النماذج
  • مربع البيانات الوصفية
  • الشريط الجانبي لـ discourse

نعم.
الشيء الغريب هو أنه من المفترض أن يتم تخزينه مؤقتًا، وليس لدي سبب للاعتقاد بأن هذا ليس صحيحًا.

$categories = get_transient( 'wpdc_discourse_categories' );
if ( ! empty( $options['publish-category-update'] ) || ! $categories ) {
  $body = $this->discourse_request( '/site.json' );
  if ( is_wp_error( $body ) ) {
    return $body;
  }

  if ( $body->categories ) {

    // removed for brevity

    // Note that setting the cache to 0 will disable transient expiration.
    $category_cache_period = apply_filters( 'wpdc_category_cache_minutes', 10 );
    set_transient( 'wpdc_discourse_categories', $discourse_categories, intval( $category_cache_period ) * MINUTE_IN_SECONDS );

    return $discourse_categories;
  } else {
    return new \WP_Error( 'key_not_found', 'The categories key was not found in the response from Discourse.' );
  }
}

تعديل: عندما أقوم بإدراج العناصر المؤقتة، لدي مفتاح timeout_wpdc_discourse_categories بقيمة طابع زمني في غضون 5 دقائق، ولكن ليس لدي wpdc_discourse_categories:thinking:

تعديل 2: set_transient( 'wpdc_discourse_categories', $discourse_categories, intval( $category_cache_period ) * MINUTE_IN_SECONDS ); يُرجع false. $discourse_categories مملوء بشكل صحيح. العناصر المؤقتة الأخرى تعمل.

تحديث: الـ transient لا يتم حفظه ببساطة. يتم حفظه عندما أقوم بـ json_encode() له.

أيضًا، لم أتمكن من إعادة إنتاج هذا في نسخة ووردبريس أخرى، لذلك أقوم بنقل هذا إلى الدعم لأنني أعتقد أن هذه مشكلة في ووردبريس. أشك في وجود نوع من الإضافات الأمنية التي تتداخل.

إعجاب واحد (1)