Що змушує точки зору послідовно, але періодично не знаходити думку, надану модулем Advanced Forum?


15

Я отримую часту, переривчасту помилку від модуля Advanced Forum, яка викликає помилку 500, коли вона виникає (WSOD). На виробництві це відбувається приблизно 20 разів на годину, напевно, 2-3% усіх завантажень сторінки форуму на годину. Він послідовно переривчастий . Місцево я не можу послідовно відтворювати помилку, але вона трапляється.

Помилка ввімкнена

Рядок 232 сайтів / всі / модулі / contrib / Advanced_forum / включає / core-overrides.inc`:

Виклик невизначеного методу stdClass :: preview ()

Проблема полягає у функції Advanced_forum_get_topics ():

function advanced_forum_get_topics($tid, $sortby, $forum_per_page, $sort_form = TRUE) {
  $term = taxonomy_term_load($tid);
  drupal_add_feed('taxonomy/term/' . $tid . '/feed', 'RSS - ' . check_plain($term->name));

  // Views handles this page
  $view = views_get_view('advanced_forum_topic_list');
  $view->sort_form = $sort_form;

  return $view->preview('default', array($tid));

}

По суті, view_get_view () не вдається знайти подання, і об'єкт не створюється так, як очікувалося у зворотному рядку. Тож проблема, здається, полягає в поглядах, які іноді не знають, що існує погляд. Це змушує мене думати, що це проблема з гачками.

Там, де починає дивно, - це реалізоване файлів_установок_установок_установок_команд () і гачок-перегляду_plugins (). Відповідно до views.api.php how_views_default_views () має міститись у файлі під назвою MODULENAME.views_default.inc, а mower_views_plugins () має бути у файлі під назвою MODULENAME.views.inc. Однак обидва файли знаходяться у файлі MODULENAME.views.inc.

Від views.api.php:

  • hook_views_plugins()
    Цей гачок слід розмістити в MODULENAME.views.inc, і він буде завантажений автоматично.
    MODULENAME.views.inc має бути в каталозі, визначеному ключем 'path', поверненим MODULENAME_views_api (), або тим же каталогом, що і файл .module, якщо "path" не визначено.

  • hook_views_default_views()
    Цей гачок повинен бути розміщений у MODULENAME.views_default.inc, і він буде завантажений автоматично. MODULENAME.views_default.inc має бути в каталозі, визначеному клавішею "path", повернутою MODULENAME_views_api (), або тим же каталогом, що і файл .module, якщо "path" не визначено.

Я спробував розділити ці підпрограми на, здавалося б, правильні файли. Це призвело до того, що Перегляди постійно знаходили перегляд «Розширений форум» (як зазначено, що він відображався у списку графічного інтерфейсу «Перегляди»), але не бачили плагін. Сторінки в розширеному форумі спрацювали нормально, але перегляди були порожніми, оскільки вони посилалися на плагін стилю, наданий Advanced Forum, про те, що перегляди більше не бачили.

Я припускаю, що мені щось не вистачає про гачки Views, але я абсолютно спотиканий.

  • Стек: Drupal 7, Перегляди (7.x-3.3), CTools (7.x-1.0), Розширений форум (7.x-2.0)
  • PHP FPM, APC, nginx, Redis
  • Я не знайшов нічого корисного в цьому питанні

ОНОВЛЕННЯ 1 : Хоча я не вирішив першопричину, виявляється, що відключення Redis і повернення до механізму зберігання кешу на основі даних Drupal за замовчуванням зупиняє виникнення проблеми.

ОНОВЛЕННЯ 2 : Я можу надійно повторити проблему на локальному, зробивши flushallв Redis. Навантаження на першу сторінку при перегляді списку форуму згубиться. Завантаження другої сторінки (і всі наступні) добре працює . ОНОВЛЕННЯ: Я маю натиснути сторінку перегляду адміністратора, щоб очистити помилку.

ОНОВЛЕННЯ 3 : При подальшому усуненні неполадок проблема, як видається, викликана тим, що кеш Views не буде належним чином відновлюватися після очищення кеша, лише при використанні Redis. Проблема не виникає при поверненні до стандартного кешу Drupal. Коли проблема виникає лише 2-4 записи кеша для Views, на відміну від 100+, коли кеш правильно побудований. Відвідування сторінки списку переглядів адміністратора призводить до того, що кеш буде повністю побудований, а проблема не виникає. Мені потрібно перевірити, чи потрапляє будь-яка сторінка перегляду View, що викликає проблему, або просто розширений перегляд форуму.

ОНОВЛЕННЯ 4 : Корисний користувач IRC припустив, що це може бути проблемою, пов’язаною з умовами перегонів із кешею переглядів : 853864 , 1102252


Ви спробували створити проблему у черзі "Перегляди", "Ctools" або "Розширений форум"? Мені здається, що питання, чи є в даний час перегляди чи розширений форум, які підтримують Redis? Наскільки мені відомо, Views використовує мову реляційного запиту (SQL) для побудови своїх дисплеїв. Я не впевнений, наскільки добре це складеться з Redis (магазин ключових цінностей). Це насправді не відповідь, але тоді я особисто не знаю, чи є відповідь на це. Я також рекомендую вам звернутися до інших каналів IRC для цього питання. Удачі.
любительська бариста

Цікаве налаштування у вас є.
любительська бариста

Я використовую Redis лише як заміну для заміни кеша Drupal, тому він повинен бути прозорим для Views. Я опублікував у Do без удачі. drupal.org/node/1110688
Джастін

@amateurbarista Це Пантеон Друпал.
Джастін

1
Ви можете спробувати інші файли кеш-пам'яті? Це потенційно може визначити, чи є у вас проблеми з переглядами чи з Redis.
mpdonadio

Відповіді:


1

Здається, ви знайшли правильну відповідь від IRC. "Послідовно переривчастий" у моєму досвіді є, коли є два джерела, що заповнюють кеш. Найчастіше, коли у вас є сайт розробки та інсценізаційний / виробничий сайт на різних кодових базах, але однакові бази даних. Забезпечені друпами кеші, які я прочитав код для підключення до бази даних, тому інформація про маршрутизацію / функцію, яка кешується, перетинає зараження. Перейшовши на сторінку адміністратора / модулів, оновіть кеш модулів та місця розташування, натискання сторінки переліку адміністраторів / переглядів очищає вашу помилку, оскільки воно оновлює розуміння сайту поглядами з точки зору вашого сайту, а не з точки зору того, що з вами суперечить.

Якщо у вас є можливість адміністратора сервера, змініть пароль на базу даних вашого сайту та пароль у your settings.php, і подивіться, що порушується. Ваші списки повинні перестати бути пошкодженими, а те, що підробляє їх, повинно зламатися ... якщо тільки воно не підключено безпосередньо до вашого веб-сайту та не використовує ваш файл settings.php.

Також переконайтеся, що у вашому docroot не встановлено кілька установок модуля перегляду.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.