Query in RAM con PHP ?

Aritmico

Nuovo Utente
23 Mag 2008
7
0
0
Salve a tutti :)

Avrei un quesito, diverso dal solito, da porvi...

Conoscete un modo per mantenere delle query ( nella fattispecie insert ed update ) in memoria senza eseguirle "al volo" ?

Devo ottimizzazre il più possibile un prodotto che ospita migliaia e migliaia di utenti ed il cliente ha richiesto che le query meno importanti vengano memorizzate da una parte e, ogni tot di ore, tramite un cron vengano effettuati tutti i calcoli ed inserite fisicamente nel db...

Ovviamente sono stati scartati i files di testo o simili ( perchè avrebbero l'effetto contrario che è quello di rallentare il sistema ) e delle tabelle temporanee ( perchè comunque per inserirvi i dati occorrerebbe effettuare delle insert e, a quel punto, si potrebbero fare direttamente sul sistema )...

Ho pensato a degli array globali ma dovrebbero essere legati alla sessione dell'utente e non rispetterebbero il requisito "cron"...

Sempre che abbiate capito il problema ( per colpa mia visto che spiegarlo a parole è veramente difficile ) vi passa per la mente qualche soluzione ?

Grazie anticipatamente per una vostra eventuale risposta :)
 
Eh eh eh...sapevo di non essermi spiegato bene...

Non ho delle query predefinite che effettuano una insert di un preciso dato...

Ti faccio un esempio:

Utente A clicca sul profilo di Utente B e genera una INSERT nella tabella "clicks"
Utente B vota Utente C e genera una INSERT nella tabella "voti"

Io devo memorizzare tutte le INSERT generate dalle richieste degli utenti e, ad una certa ora, effettuarle tutte insieme in sequenza come se fossero in coda...

Il problema è: come mantenere in memoria queste INSERT ?
 
Beh potresti optare per una soluzione del genere: una tabella mysql che ha come colonne: userid, querysql.
Dove userid è l'ID del tuo utente (in relazione alla sua sessione) e querysql è la query da eseguire.
Per esequirle tutte assieme puoi fare una cosa del genere:
PHP:
$query = mysql_query('SELECT querysql FROM tuodatabase WHERE userid = "' . campodicontrollo . '";');
while ($res = mysql_fetch_array($query)) {
    mysql_query($res['querysql']);
}
 
Si ma torniamo al problema che ho esplicitato nel post di apertura :)

Per inserire nella tabella l'id utente e la query da eseguire poi in modalità coda insieme a tutte le altre devo, comunque, effettuare una INSERT ( una per ogni azione dell'utente ) e a quel punto posso effettuare direttamente quella sul database principale...

La richiesta sarebbe un oggetto che mantenga in memoria ( a livello server ) questa coda di query...

Ci sto sbattendo la testa da due giorni leggendo decine e decine di articoli e spulciando manuali ma non riesco, davvero, a visualizzare una potenziale soluzione...
 
Eh, più a livello server di così!
I dati rimangono nel database mysql per quanto vuoi.
Basta far eseguire quello script ad un'ora da te impostata...
 
Server Web non Server mySQL :D

Rileggi quello che ho affermato: devo risparmiare numero di query fisiche sul DB :)

Inutile effettuare una INSERT su un contenitore B se poi la devo ri-scrivere sul contenitore A: a questo punto anzichè ridurle le sto raddoppiando :D

Non so se mi stai capendo ma nel caso ti capisco: questa richiesta pare un pò assurda anche a me...
 
E allora crea un file sul server...
Ad una cert'ora lo apri e tutte le righe contenute nel file che saranno query sql le fai esegurie.
 
A livello di tempistiche è più lenta l'operazione di scrittura su file rispetto a quella su DB...

Ho come l'impressione che la soluzione non ci sia o si sia nascosta veramente bene :book:
 
Eh io ho come l'impressione che tu voglia la botte piena e la moglie ubriaca.
Le soluzioni ci sono, il problema è che non le vuoi adottare :)
Enjoy
 
Francamento non riesco a concepire come una persona possa avere un database mysql e però non possa/voglia sfruttarlo a pieno.
I problemi nascono perchè la gente se li crea...
 
Secondo il suo ragionamento è che appesantire il lavoro del server web è meglio di appesantire quello del db in determinati orari "caldi"...non saprei giustificarlo diversamente...
 

Discussioni simili