Ricevo un errore frequente e intermittente dal modulo Advanced Forum che provoca un errore 500 quando si verifica (WSOD). Durante la produzione, accade circa 20 volte all'ora, probabilmente il 2-3% di tutti i caricamenti di pagine del forum all'ora. È costantemente intermittente . A livello locale, non riesco a riprodurre in modo coerente l'errore, ma si verifica.
L'errore è acceso
Riga 232 di siti / all / modules / contrib / advanced_forum / Includes / core-overrides.inc`:
Chiamata al metodo indefinito stdClass :: preview ()
Il problema si trova con la funzione 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));
}
Essenzialmente views_get_view () non riesce a trovare la vista e l'oggetto non viene creato come previsto sulla linea di ritorno. Quindi il problema sembra risiedere in Views occasionalmente non sapendo che esiste la view. Questo mi fa pensare che sia un problema con l'amo.
Dove iniziano a diventare strani sono le implementazioni di hook_views_default_views () e hook_views_plugins (). Secondo views.api.php hook_views_default_views () dovrebbe essere in un file chiamato MODULENAME.views_default.inc e hook_views_plugins () dovrebbe essere in un file chiamato MODULENAME.views.inc. Tuttavia, entrambi i file si trovano nel file MODULENAME.views.inc.
Da views.api.php:
hook_views_plugins()
Questo hook deve essere posizionato in MODULENAME.views.inc e verrà caricato automaticamente.
MODULENAME.views.inc deve trovarsi nella directory specificata dalla chiave 'path' restituita da MODULENAME_views_api () o nella stessa directory del file .module, se 'path' non è specificato.hook_views_default_views()
Questo hook deve essere posizionato in MODULENAME.views_default.inc e verrà caricato automaticamente. MODULENAME.views_default.inc deve trovarsi nella directory specificata dalla chiave 'path' restituita da MODULENAME_views_api () o nella stessa directory del file .module, se 'path' non è specificato.
Ho provato a suddividere queste routine in file apparentemente corretti. Ciò ha fatto sì che Views trovasse costantemente la vista Advanced Forum (come indicato che appariva nell'elenco GUI di Views) ma non vedeva il plug-in. Le pagine del forum avanzato funzionavano bene, ma le visualizzazioni erano vuote perché facevano riferimento a un plug-in di stile fornito dal forum avanzato che Views non vedeva più.
Presumo che mi manchi qualcosa sugli hook di Views, ma sono totalmente sconcertato.
- Stack: Drupal 7, Visualizzazioni (7.x-3.3), CTools (7.x-1.0), Advanced Forum (7.x-2.0)
- PHP FPM, APC, nginx, Redis
- Non ho trovato nulla di utile in questo problema
AGGIORNAMENTO 1 : Anche se non ho risolto la causa principale, sembra che la disabilitazione di Redis e il ripristino del meccanismo di archiviazione cache basato su database predefinito di Drupal impediscano il verificarsi del problema.
AGGIORNAMENTO 2 : Posso replicare in modo affidabile il problema su local facendo un flushall
in Redis. Il caricamento della prima pagina di visualizzazione di un elenco di forum sarà fatale. Il caricamento della seconda pagina (e tutti i successivi) funzionano correttamente . AGGIORNAMENTO: Devo toccare la pagina di elenco Visualizzazioni amministratore per cancellare l'errore.
AGGIORNAMENTO 3 : a seguito di un'ulteriore risoluzione del problema, il problema sembra essere causato dalla cache di Views non correttamente ricostruita dopo la cancellazione della cache, solo quando si utilizza Redis. Il problema non si verifica quando si ripristina la cache Drupal standard. Quando si verifica il problema, esistono solo 2-4 voci della cache per Views, al contrario di 100+ quando la cache è costruita correttamente. Visitando la pagina dell'elenco delle visualizzazioni dell'amministratore, la cache viene completamente compilata e il problema non si verifica. Devo verificare se colpire qualsiasi pagina della vista Visualizza che causa il problema o solo la vista avanzata del forum.
AGGIORNAMENTO 4 : Un utente utile su IRC ha suggerito che questo potrebbe essere un problema relativo ai problemi relativi alle condizioni della corsa della cache di Views: 853864 , 1102252