Điều gì gây ra Lượt xem một cách nhất quán nhưng không liên tục không tìm thấy chế độ xem được cung cấp bởi mô-đun Diễn đàn nâng cao?


15

Tôi đang gặp lỗi thường xuyên, không liên tục từ mô-đun Diễn đàn nâng cao gây ra lỗi 500 khi xảy ra (WSOD). Khi sản xuất, nó diễn ra khoảng 20 lần mỗi giờ, có lẽ khoảng 2-3% tổng số trang diễn đàn tải mỗi giờ. Nó liên tục không liên tục . Tại địa phương, tôi không thể liên tục tái tạo lỗi, nhưng nó đã xảy ra.

Lỗi là trên

Dòng 232 của trang web / tất cả / mô-đun / contrib / advanced_forum / bao gồm / core-overrides.inc`:

Gọi phương thức không xác định stdClass :: preview ()

Vấn đề nằm ở hàm 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));

}

Về cơ bản, view_get_view () không tìm thấy chế độ xem và đối tượng không được tạo như mong đợi trên dòng trả về. Vì vậy, vấn đề dường như nằm ở Lượt xem đôi khi không biết chế độ xem tồn tại. Điều này khiến tôi nghĩ rằng đó là một vấn đề hook.

Nơi nó bắt đầu trở nên kỳ quặc là việc triển khai hook_view_default_view () và hook_view_plugins (). Theo lượt xem.api.php hook_view_default_view () nên có trong một tệp có tên MODULENAME.view_default.inc và hook_view_plugins () phải nằm trong tệp có tên MODULENAME.view.inc. Tuy nhiên, cả hai tệp đều nằm trong tệp MODULENAME.view.inc.

Từ lượt xem.api.php:

  • hook_views_plugins()
    Móc này phải được đặt trong MODULENAME.view.inc và nó sẽ được tự động tải.
    MODULENAME.view.inc phải nằm trong thư mục được chỉ định bởi khóa 'path' được trả về bởi MODULENAME_view_api () hoặc cùng thư mục với tệp .module, nếu 'path' không được chỉ định.

  • hook_views_default_views()
    Móc này phải được đặt trong MODULENAME.view_default.inc và nó sẽ được tự động tải. MODULENAME.view_default.inc phải nằm trong thư mục được chỉ định bởi khóa 'path' được trả về bởi MODULENAME_view_api () hoặc cùng thư mục với tệp .module, nếu 'path' không được chỉ định.

Tôi đã thử tách các thói quen này thành các tập tin có vẻ đúng. Điều này khiến Chế độ xem luôn tìm thấy chế độ xem Diễn đàn nâng cao (như đã chỉ ra rằng nó xuất hiện trong danh sách GUI xem) nhưng không thấy trình cắm. Các trang trong Diễn đàn nâng cao chạy tốt, nhưng lượt xem trống vì họ đã tham chiếu một plugin kiểu được cung cấp bởi Diễn đàn nâng cao mà Lượt xem không còn thấy nữa.

Tôi cho rằng tôi đang thiếu một cái gì đó về các khung nhìn, nhưng tôi hoàn toàn bối rối.

  • Ngăn xếp: Drupal 7, Lượt xem (7.x-3.3), CTools (7.x-1.0), Diễn đàn nâng cao (7.x-2.0)
  • PHP FPM, APC, nginx, Redis
  • Tôi không tìm thấy bất cứ điều gì hữu ích trong vấn đề này

CẬP NHẬT 1 : Trong khi tôi chưa giải quyết được nguyên nhân gốc rễ, có vẻ như việc vô hiệu hóa Redis và trở lại cơ chế lưu trữ bộ đệm dựa trên cơ sở dữ liệu mặc định của Drupal sẽ ngăn sự cố xảy ra.

CẬP NHẬT 2 : Tôi có thể sao chép một cách đáng tin cậy vấn đề trên địa phương bằng cách thực hiện flushalltrong Redis. Tải trang đầu tiên của việc xem danh sách diễn đàn sẽ gây tử vong. Tải trang thứ hai (và tất cả các lần tiếp theo) hoạt động tốt . CẬP NHẬT: Tôi phải nhấn trang danh sách Lượt xem của quản trị viên để xóa lỗi.

CẬP NHẬT 3 : Khi khắc phục sự cố thêm, sự cố có vẻ là do bộ đệm Chế độ xem không được xây dựng lại sau khi xóa bộ đệm, chỉ khi sử dụng Redis. Vấn đề không xảy ra khi trở lại bộ đệm Drupal tiêu chuẩn. Khi sự cố chỉ xảy ra 2-4 mục bộ nhớ cache tồn tại cho Chế độ xem, ngược lại 100+ khi bộ đệm được tạo đúng. Truy cập trang danh sách lượt xem của quản trị viên khiến bộ đệm được xây dựng đầy đủ và sự cố không xảy ra. Tôi cần xác minh nếu nhấn bất kỳ trang Xem chế độ nào gây ra sự cố hoặc chỉ xem chế độ xem diễn đàn nâng cao.

CẬP NHẬT 4 : Một người dùng hữu ích trên IRC đã đề xuất rằng đây có thể là sự cố liên quan đến các vấn đề về tình trạng cuộc đua bộ nhớ cache: 853864 , 1102252


Bạn đã thử tạo một vấn đề trong hàng đợi Lượt xem, Ctools hoặc Diễn đàn nâng cao chưa? Đối với tôi có vẻ như câu hỏi trong tầm tay là Lượt xem hoặc Diễn đàn nâng cao hiện đang hỗ trợ redis? Theo như tôi biết, Lượt xem sử dụng ngôn ngữ truy vấn quan hệ (SQL) để xây dựng màn hình. Tôi không chắc chắn điều đó sẽ diễn ra tốt như thế nào với Redis (một cửa hàng khóa-giá trị). Đây thực sự không phải là một câu trả lời, nhưng sau đó, cá nhân tôi không biết liệu có câu trả lời cho điều đó không. Tôi cũng khuyên bạn nên tiếp cận với các kênh IRC drupal cho câu hỏi này. Chúc may mắn.
barista nghiệp dư

Thiết lập thú vị bạn có đó.
barista nghiệp dư

Tôi chỉ sử dụng Redis như một sự thay thế thả xuống cho phần phụ trợ bộ đệm của Drupal, vì vậy nó phải trong suốt với Chế độ xem. Tôi đăng lên Làm mà không gặp may. drupal.org/node/1110688
Justin

@am Nghiệpbarista Đó là Pantheon Drupal.
Justin

1
Bạn đang ở trong một vị trí để thử các phụ trợ bộ đệm khác? Điều đó có khả năng xác định xem bạn đang gặp vấn đề với Lượt xem hay với Redis.
mpdon Arena

Câu trả lời:


1

Có vẻ như bạn đã tìm thấy câu trả lời đúng từ IRC. "Không liên tục" theo kinh nghiệm của tôi là khi có hai nguồn lấp đầy bộ đệm. Phổ biến nhất là khi bạn có một trang web phát triển và một trang dàn dựng / sản xuất trên các cơ sở mã khác nhau nhưng cùng một cơ sở dữ liệu. Các bộ đệm được cung cấp bởi drupal mà tôi đã đọc mã để kết nối với cơ sở dữ liệu, vì vậy thông tin định tuyến / chức năng được lưu trữ sẽ gây ô nhiễm chéo. Đánh vào trang quản trị / mô-đun sẽ làm mới bộ đệm và vị trí của mô-đun, nhấn trang danh sách quản trị / lượt xem sẽ xóa lỗi của bạn vì nó làm mới sự hiểu biết của trang về quan điểm của trang web thay vì quan điểm của bất kỳ điều gì mâu thuẫn với bạn.

Nếu bạn có khả năng quản trị viên máy chủ, hãy thay đổi mật khẩu vào cơ sở dữ liệu của trang web và mật khẩu trong settings.php của bạn và xem những gì phá vỡ. Danh sách của bạn sẽ ngừng bị hỏng và những gì đang giả mạo chúng sẽ bị phá vỡ ... trừ khi nó được kết nối trực tiếp với trang web của bạn và sử dụng tệp settings.php của bạn.

Ngoài ra, hãy kiểm tra để đảm bảo không có nhiều cài đặt của mô-đun khung nhìn trong docroot của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.