Newsgroup: it.comp.www.php
Titolo: Array in memoria?

Vi espongo quello che vorrei realizzare:
in una delle pagine del mio sito vorrei riempire un array.
Esempio:
$mio_array[1] = 1
$mio_array[2] = 2
poi...in una qualsiasi delle altre pagine...se scrivo echo $mio_array[1]
mi dovrebbe scrivere 1.
Si può fare?
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Si può fare?
[..]
si..
-- 
www.iuz-lab.info

 
-- 
Motion - not in my f*cking county - Musso

 Si può fare?
Direi di si.
Nel file include.php (per esempio) metti
<?php
  $mio_array[1] = 1;
  $mio_array[2] = 2;
?>
In tutti gli altri file
<? require_once ('include.php'); ?>
Ovviamente ponendo che tutti i file siano nella stessa directory, stò  
semplificando.
Tac
-- 
La netiquette prevede sign di al massimo quattro righe.
Purtroppo la mia sign in quattro righe non ci stà.

 <? require_once ('include.php'); ?>
------------
In quel caso (ho provato) per mettere in quel file tutti i dati che mi
interessano devo creare un file di ben 4.275 Kb e sono troppi.
soltanto per leggerli bisognerebbe aspettare diversi minuti.
Invece, caricandoli da una pagina php, l'array si riempie in meno di un
secondo.
Il problema, una volta riempito l'array, č di renderlo disponibile per
tutte le pagine successive di quella sessione.
Help meee!!!


 wrote in message
news:op.s2gpp...@taczx.residential.fw
tra le altre cose....
Fatal error: Allowed memory size of 104857600 bytes exhausted (tried to
allocate 35 bytes) in
/home/programmi-lotto/doctor_lotto_online/include.php on line 169239


 wrote in message
news:op.s2gpp...@taczx.residential.fw
inoltre...tra le altre cose...
Fatal error: Allowed memory size of 104857600 bytes exhausted (tried to
allocate 35 bytes) in ...PERCORSO/include.php on line 169239


 tutte le pagine successive di quella sessione.
Se ti servono per forza in memoria, carica l'array una volta e passalo
in sessione.
Se ti servono ma sporadicamente, allora potresti (in PHP5) fare una
classe e sovraccaricare __get perche` vada a leggere i dati dal DB
quando glieli chiedi con $mio_array.v1 per esempio.
Bye.
-- 
Alessandro Pellizzari

 in sessione.
E' proprio quello che non riesco a fare: "passare l'array in sessione"
ho cercato in vari siti. con google, ecc.ecc...


 E' proprio quello che non riesco a fare: "passare l'array in sessione"
session_register()
Oppure $_SESSION["array"] = $array;
Bye.
-- 
Alessandro Pellizzari

 wrote in message
news:1135763696.6247.37.camel@alex
Ho provato ma non riesco a recuperare i dati.
Nella seconda pagina non mi scrive niente.
primo file:
<?php
session_start();
$ar[1] = "ciao";
$ar[2] = "Totò";
$_SESSION["array"] = $ar; 
?>
secondo file:
<?php
session_start();
$ar = $_SESSION["array"];
echo $ar[2];
?>


 Oppure $_SESSION["array"] = $array;
Risolto, grazie a te.


 wrote in message
news:1135763696.6247.37.camel@alex
Ho provato il mio codice su un hosting differente e mi da questo errore:
Warning: session_start(): Cannot send session cache limiter - headers
already sent (output started at
/rootdomain/it/l/o/
lottoambo.it/public_html/dl_online/archivio.php:10
)
in /rootdomain/it/l/o/
lottoambo.it/public_html/dl_online/archivio.php
 on
line 11
la linea incriminata è questa:
session_start();


 already sent (output started at
http://www.php.net/manual/it/ref.session.php
http://www.php.net/manual/en/ref.session.php
Scusa, ma credo ti manchino proprio le basi, quindi ti consiglio di
leggere il manuale.
Bye.
-- 
Alessandro Pellizzari

 allocate 35 bytes) in ...PERCORSO/include.php on line 169239
Appunto, ma chi te lo fà fare ti tenerti in memoria/sessione così tanti  
dati?
Mi rendo conto che il mio consiglio era inappropriato, ma in genere gli  
array presenti nei file di include raramente sono *così* grossi.
Metti tutto sul db, poi crea una funzione o una classe che ripeschi i dati.
Una roba semplice (sempre in include.php, al posto dell'elefantiaco  
sbrodolone):
function getValue($key){
   //metti qui il codice che pesca dal db.
   return $key;
}
Ma anche una soluzione del genere dipende dalle tue esigenze, non è detto  
sia la soluzione piu' consona.
Che vuoi fare?


 quando glieli chiedi con $mio_array.v1 per esempio.
Non concordo, sicuramente l'overloading (__get) è una cosa carina, ma mi  
pare uno spreco per un'esigenza così semplice, soprattutto perchè và a  
perirne la retro-compatibilità (ma potrebbe non interessare.
Oltretutto nemmeno a livello di design mi pare il massimo, perlomeno in  
questo caso specifico, non sussistendo la necessità di usare proprietà  
invece che metodi mi pare la soluzione meno leggibile, meno coerente, meno  
flessibile e anche la piu' sporca.
IMHO i getter e i setter in PHP vanno usati solo quando sussiste veramente  
la necessità (refactoring di un certo tipo) o quando possono rendere piu'  
chiaro il codice. Anche perchè soffrono di tutta una serie di limitazioni  
(per esempiono non gestiscono i reference nei valori di ritorno).


 Che vuoi fare?
Visualizzare l'ultimo record di un file e, cliccando su "INDIETRO"
vedere il record precedente.
Il tutto in pochissimi secondi.
Il mio database contiene una tabella del tipo $array[5000][10][5]


 Il mio database contiene una tabella del tipo $array[5000][10][5]
Il tuo database è in realtà un semplice file php.
Dovresti:
- trasferire i dati su una tabella di database. (possibilmente con chiavi)
- creare una funzione che legge il singolo record dalla tabella.
Con questo la velocità sarà piu' che decente.
Soluzioni un poco piu' veloci esistono ma non è il caso di approfondire,  
visto che cmq questo è il primo passo.
