2012-11-26 16 views
6

Cercherò di essere semplice, quindi quello che mi serve è, eseguire una query MySQL (selezionando i record da una tabella) diciamo che non produrre la query con cron jobs o qualunque cosa ogni 5 minuti, e salva questa query o i risultati in un file o una variabile globale, se possibile, e quindi servendola a tutti i client (cioè utilizzando la stessa query a tutti gli utenti, senza dover riconnettersi a quel database.) Ora so che alcuni di voi mi diranno di usare la cache, ma l'ho cercata, e se la tabella cambia ci sarà una nuova cache, e la mia tabella è in continua evoluzione, ora non mi interessa se la tabella è cambiata , voglio solo servire la stessa query a tutti i client. È possibile? i tuoi consigli per favore. Grazie.Utilizzare la stessa query MySQL con tutti gli utenti senza dover riconnettersi al database

La cache scade automaticamente quando la tabella viene modificata (inserimenti, aggiornamenti, eliminazioni, ecc.). E la mia tabella cambia continuamente, quindi è possibile salvare una cache anche se la tabella è stata modificata? o dovrei cercare una soluzione diversa?

+0

Hai esaminato le soluzioni di caching? – hd1

+0

fare query ripetitive identiche non è insolito - hai problemi specifici? mysql sta facendo un po 'di cache per impostazione predefinita. –

+0

Sì, l'ho già detto nella mia domanda, ma come ho già detto, la mia tabella cambia continuamente e la cache verrà cancellata se la tabella è stata aggiornata. – user1852196

risposta

1

Se il set di risultati non è troppo grande, si potrebbe memorizzare nella cache in una script generato in questo modo:

file_put_contents(
    'mycache.php', 
    '<?php return ' . var_export($results, true) . ' ?>' 
); 

Poi usarlo:

$results = include 'mycache.php'; 
+0

grazie mille. Il tuo metodo ha dato proprio quello di cui ho bisogno. – user1852196

0

Se siete sempre utilizza allo stesso modo (funzione, di classe) per eseguire database di leggere e scrivere,
si può sempre mettere un expireation cache dopo ogni azione

ad esempio:

function add() // update, delete 
{ 
    if (added) $this->expire_cache(); 
} 

function search() 
{ 
    if (results) $this->set_cache(results); 
} 

function expire_cache() 
{ 
    // do expire or purge cache 
} 

function set_cache($db_results) 
{ 
    // saving the database result OR computed result into cache 
    // memcache, redis, disk cache or anything 
} 

Tuttavia , lo scopo di avere cache è quello di servire la richiesta senza dover ottenere risorse costose come query di database,
ma se è necessario aggiornare molto frequentemente, l'implementazione della cache non è così utile

memcache esempio: http://php.net/manual/en/book.memcache.php

si avrebbe bisogno di compilare il modulo memcache, l'installazione & avviare un server memcache per utilizzare memcache

+0

Sì perché la mia tabella si sta aggiornando molto frequentemente:/quindi non posso usare la cache MySQL. E il problema è che puoi installare memcache solo sui server rilevati. – user1852196

Problemi correlati