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 flushall
trong 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