Problema con la cache

3 contenuti / 0 new
Ultimo contenuto
Problema con la cache

Buongiorno a tutti, ho questo problema:
ho realizzato un sito dove devo gestire diversi account che ho creato tramite l'uso di un form creato con cck. Da amministratore creo gli account mentre l'utente deve essere in grado di poter modificare solo alcuni dei campi del suo account. Per semplicità elenco solo alcuni campi presenti nel form che sono nome, telefono, fax. L'utente deve poter variare solamente telefono e fax (e altri ..)
Per fare ciò ho realizzato un form usando il modulo CCK che crea i seguenti campi:
nome -> che crea le tabelle (field_data_field_nome) e (field_revision_nome),
telefono: -> field_data_field_telefono, field_revision_telefono,
fax: -> field_data_field_fax, field_revision_fax.
Per consentire la modifica di alcuni campi ho realizzato un modulo ad hoc che carica i dati dell'utente e li visualizza in un form, quindi ne permette la modifica e il salvataggio. Fin qui nessun problema, i dati vengono sostituiti e salvati, ma quando vado a visualizzare i dati dell'account vengono ancora visualizzati quelli vecchi. Per poter vedere i dati aggiornati devo necessariamente fare il flush delle cache tramite "Svuota tutte le cache" in Amministrazione » Configurazione » Sviluppo » Prestazioni.
Ho provato allora ad inserire al termine del salvataggio la funzione cache_clear_all(), ma non ottengo quanto voluto.
A questo punto spero che qualcuno mi sappia dare qualche consiglio per risolvere il problema
Grazie

Drupal Version:

Ciao,
utilizzando la funzione cache_clear_all() e non passandogli gli argomenti richiesti, cancella la cache relativa alle pagine ai blocchi (cache_page e cache_block).
Una possibile funzione da utilizzare per cancellare tutte le cache e ricreare i link di menu, i registri, eccc... è drupal_flush_all_caches.
Quest'ultima funzione però non te la consiglio di usare con troppo leggerezza perchè richiede un certo impegno per l'elaborazione da parte del server/cms.
Piuttosto utilizza la prima funzione (cache_clear_all()) passandogli gli argomenti che identificano nello specifico il tuo utente o l'intera tabella utenti.
doc:
1. https://api.drupal.org/api/drupal/includes%21cache.inc/function/cache_cl...
2. https://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_...

Grazie Luca, io usavo cache_clear_all() senza parametri, ma effettiivamente non succedeva quello che mi aspettavo. Ho modificato la funzione cache_clear_all($_POST['entity_id'], 'cache_page', TRUE) e sembra funzionare correttamente.
Grazie per la dritta ;-)