Problema sul risparmio delle risorse.

xansoft

Nuovo Utente
27 Feb 2012
2
0
0
Salve a tutti, in questo momento sto progettando un gioco di ruolo in php, il mio problema è molto semplice, il gioco prevede una serie di dati "non dinamici" che devono essere utilizzati di continuo, per esempio nel gioco ci sono diversi mostri che hanno caratteristiche come ad esempio: vita, danno, immagine da caricare, ecc...
Ora inizialmente avevo pensato di inserire questi dati in una tabella mysql, ma questo comporta che ogni santissima volta che un giocatore incontra un nemico il server dovrà fare una query (moltiplicata per 1000 giocatori contemporaneamente).
Ho pensato che dato che questi dati rimangono fissi, e sono letti di continuo, sia uno spreco di risorse far lavorare cosi tanto mysql, e quindi ho pensato che sarebbe potuto essere utile caricare in memoria questi dati in modo da avere un accesso diretto. In effetti caricando i dati in un array di sessione risolvo il problema di mysql, ma ho notato che aprendo diverse sessioni questi dati non sono condivisi tra le sessioni pur essendo esattamente identici e quindi l'utilizzo della memoria si moltiplica per gli utenti connessi (cosa improponibile).

La domanda è quindi: c'è un modo di far caricare questi dati in memoria e far in modo che il seguente utente che cerca di caricarli utilizzi quelli già caricati, ad esempio dichiarandoli come dati "finali" (non modificabili) o con qualche sorta di variabile "globale" visibile da tutti gli utenti?

grazie a tutti :)
 
Ultima modifica:
ciao
non so quanti mostri hai (qui nel forum uno: vampiro), ne quali sono le caratteristiche che devono avere, ma non potresti farti in file php (es. mostri.php)
PHP:
<?php
$mostro_1=array('vita'=>'bella vita', 'danno' =>'non dannoso', 'immagine'=> 'mostro_1.jpg');//e altri valori
$mostro_2=array('vita'=>'brutta vita', 'danno' =>'molto dannoso', 'immagine'=> 'mostro_2.jpg');//....
//eccetera....
?>
poi dove usi i mostri

PHP:
<?php
//.....
require_once "mostri.php";// o include_once
//.....
?>
certo se sono molti è un po' una bibbia
 
ciao
non so quanti mostri hai (qui nel forum uno: vampiro), ne quali sono le caratteristiche che devono avere, ma non potresti farti in file php (es. mostri.php)

certo se sono molti è un po' una bibbia

Allora ho cerato il file come mi hai detto contenente 2Mb di dati, purtroppo per ogni utente che apre la pagina sul server nel task manager esce una voce con il consumo di ram (2mb per ogni istanza), e quindi i dati si sommano per ogni istanza invece di essere condivisi....cioè per assurdo se creassi un file php per ogni mostro tipo mostro1.php, mostro2.php, ..., mostro100.php dopo facendo la require_once("mostro".$id_mostro.".php"); risolverei tutto ma è orribile....
possibile che non c'è un modo di dichiarare variabili condivise "globalmente" da ogni utilizzatore del sito?

Se cerchi su Google trovi qualche sistema interessante per effettuare il caching delle query MySQL.

mmmh purtroppo il problema è proprio che devo evitare di usare mysql visto che gli host hanno dei limiti di query orari, e credo che non facciano distinzione se sono query "cachizzate" o meno :(
 

Discussioni simili