Görünümlerin tutarlı ama aralıklı olarak Gelişmiş Forum modülü tarafından sağlanan bir görünümü bulamamasına ne neden olur?


15

Gelişmiş Forum modülünden sık, aralıklı bir hata alıyorum (WSOD) 500 hatasına neden oluyor. Üretimde, saatte yaklaşık 20 kez, muhtemelen tüm forum sayfası yüklerinin% 2-3'ünde bir saat oluyor. Bu sürekli aralıklı . Yerel olarak, hatayı sürekli olarak yeniden oluşturamıyorum, ancak oluşuyor.

Hata açık

Sitelerin 232 / tümü / modülleri / katkıda / advanced_forum / include / core-overrides.inc`:

Undefined yöntemine çağrı stdClass :: preview ()

Sorun advanced_forum_get_topics () fonksiyonunda yatmaktadır:

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));

}

Esasen views_get_view () görünümü bulamıyor ve nesne dönüş satırında beklendiği gibi oluşturulmuyor. Yani sorun bazen görüşün varlığından habersiz olan Views ile yatmaktadır. Bu bana bunun bir kanca sorunu olduğunu düşündürüyor.

Garipleşmeye başladığı yer, hook_views_default_views () ve hook_views_plugins () uygulamalarıdır. Views.api.php'ye göre hook_views_default_views (), MODULENAME.views_default.inc adlı bir dosyada ve hook_views_plugins (), MODULENAME.views.inc adlı bir dosyada olmalıdır. Ancak, her iki dosya da MODULENAME.views.inc dosyasındadır.

Views.api.php sitesinden:

  • hook_views_plugins()
    Bu kanca MODULENAME.views.inc dosyasına yerleştirilmelidir ve otomatik olarak yüklenecektir.
    MODULENAME.views.inc, MODULENAME_views_api () tarafından döndürülen 'yol' anahtarı tarafından belirtilen dizinde veya 'yol' belirtilmemişse, .module dosyasıyla aynı dizinde olmalıdır.

  • hook_views_default_views()
    Bu kanca MODULENAME.views_default.inc içine yerleştirilmelidir ve otomatik olarak yüklenecektir. MODULENAME.views_default.inc, MODULENAME_views_api () tarafından döndürülen 'yol' anahtarı tarafından belirtilen dizinde veya 'yol' belirtilmemişse .module dosyasıyla aynı dizinde olmalıdır.

Bu rutinleri görünüşte doğru dosyalara bölmeyi denedim. Bu, Views'ın (Görünüm GUI listesinde göründüğü gibi) Gelişmiş Forum görünümünü tutarlı bir şekilde bulmasına neden oldu, ancak eklentiyi görmedi. Gelişmiş Forum'daki sayfalar iyi çalıştı, ancak Görünümler artık görmediği Gelişmiş Forum tarafından sağlanan bir stil eklentisine başvurduklarından görünümler boştu.

Views kancaları hakkında bir şey eksik olduğumu varsayıyorum, ama tamamen güldüm.

  • Yığın: Drupal 7, Görünümler (7.x-3.3), CTools (7.x-1.0), Gelişmiş Forum (7.x-2.0)
  • PHP FPM, APC, nginx, Redis
  • Bu konuda yararlı bir şey bulamadım

GÜNCELLEME 1 : Kök nedenini çözemedim, ancak Redis'i devre dışı bırakıp Drupal'ın varsayılan veritabanı tabanlı önbellek depolama mekanizmasına geri dönme sorunun oluşmasını durduruyor gibi görünüyor.

GÜNCELLEME 2 : flushallRedis'te bir işlem yaparak sorunu yerel olarak güvenilir bir şekilde çoğaltabilirim . Bir forum listesine bakmanın ilk sayfa yükü ölümcül olacaktır. İkinci sayfa yüklemesi (ve sonraki tüm sayfalar) düzgün çalışır . GÜNCELLEME: Hatayı gidermek için yönetici Görüntüleme giriş sayfasına basmam gerekiyor.

GÜNCELLEME 3 : Diğer sorun giderme işlemlerinde, sorunun yalnızca önbellek temizlendikten sonra, yalnızca Redis kullanırken Views önbelleğinin düzgün bir şekilde yeniden oluşturulmamasından kaynaklandığı görülmektedir. Standart Drupal önbelleğine geri dönerken sorun oluşmaz. Sorun oluştuğunda, görünümler için yalnızca 2-4 önbellek girdisi vardır, önbellek düzgün oluşturulduğunda 100'den fazla. Yönetici görünümleri liste sayfasını ziyaret etmek, önbelleğin tamamen oluşturulmasına neden olur ve sorun oluşmaz. Soruna neden olan herhangi bir Görünüm görünümü sayfasına veya yalnızca gelişmiş forum görünümüne vurup vurmadığınızı doğrulamam gerekiyor.

GÜNCELLEME 4 : IRC'deki yardımcı bir kullanıcı, Görünüm önbellek yarışı durumu sorunları ile ilgili bir sorun olabileceğini önerdi: 853864 , 1102252


Views, Ctools veya Advanced Forum kuyruğunda sorun oluşturmayı denediniz mi? Görünüşe göre eldeki soru Views veya Advanced Forum şu anda redisleri destekliyor mu? Bildiğim kadarıyla Views, görüntülerini oluşturmak için ilişkisel bir sorgu dili (SQL) kullanır. Bunun Redis (bir anahtar / değer deposu) ile ne kadar iyi oynayacağından emin değilim. Bu gerçekten bir cevap değil, ama o zaman kişisel olarak bunun bir cevabı olup olmadığını bilmiyorum. Bu soru için drupal IRC kanallarına ulaşmanızı da tavsiye ederim. İyi şanslar.
amatör barista

Orada ilginç bir kurulum var.
amatör barista

Redis'i sadece Drupal'ın önbellek arka ucu için bir yedek olarak kullanıyorum, bu yüzden Views'a şeffaf olmalı . Şanssız Do'ya gönderdim. drupal.org/node/1110688
Justin

@amateurbarista Pantheon Drupal.
Justin

1
Diğer önbellek arka uçlarını deneyebilecek durumda mısınız? Bu, Görünümler veya Redis ile ilgili bir sorun olup olmadığını potansiyel olarak belirleyebilir.
mpdonadio

Yanıtlar:


1

IRC'den doğru cevabı bulduğunuz anlaşılıyor. Deneyimime göre "sürekli aralıklı" önbelleği dolduran iki kaynak olduğu zaman. En yaygın olanı, farklı kod tabanlarında ancak aynı veritabanında bir geliştirme siteniz ve bir hazırlama / üretim siteniz olduğunda. Veritabanına bağlanmak için kodu okuduğum drupal tarafından sağlanan önbellekler, böylece önbelleğe alınan yönlendirme / işlev bilgileri kontamine olur. Yönetici / modüller sayfasına tıklamak modül önbelleğini ve konumlarını yeniler, yönetici / görünümler liste sayfasına vurmak hatayı giderir, çünkü sitenin görünümleri sizin anlayışınızla çelişen bakış açısı yerine sitenizin perspektifinden yeniler.

Sunucu yöneticisi yeteneğiniz varsa, sitenizin veritabanının şifresini ve settings.php dosyasındaki şifreyi değiştirin ve neyin bozulduğunu görün. Doğrudan sitenize bağlı değilse ve settings.php dosyanızı kullanmadıkça, girişlerinizin bozulmasını durdurmalı ve onlarla kurcalanan şey kırılmalıdır.

Ayrıca, docroot'unuzda views modülünün birden fazla kurulumunun bulunmadığından emin olun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.