Newsgroup: it.comp.www.php
Titolo: php e gestione di memoria

Ciao a tutti :)
secondo voi in una cosa di questo tipo:
while(true) {
$mioArray=Array();
// e poi riempio l'Array in varie situazioni
}
come la gestisce la memoria il php? E' sicuro che una volta terminato un 
passaggio, quando risetto la variabile $mioArray= Array() libero OGNI 
locazione di memoria dovuta al passaggio precedente e il processore vive 
tranquillo?
Tale sicurezza me la darebbe l'unset?
grazie :)
ciao,
Luca(riello) 

 Tale sicurezza me la darebbe l'unset?
$nome_array=array();
unset($nome_array);
fanno esattamente la stessa cosa: distruggono l'array.
ps: in ogni caso....piu che problemi per il processore......se restasse una 
gran quantità di memoria allocata, i problemi sarebbero appunto di 
quest'ultima........e a quel punto.....hai voglia a fare swapping da/su 
disco.....roba da suicidio......ma tanto....prima o poi ti interviene il 
timeout che arresta l'esecuzione dello script (visto che un while(true) non 
finirebbe mai), e inoltre lo script non può "mangiarsi" oltre una certa 
quantità di memoria (il dato esatto lo puoi trovare nel php.ini).
Per vedere quanta memoria è allocata per lo script:
echo memory_get_usage()
così vedi ad ogni chiamata dell'istruzione
$nome_array=array();
cosa succede.
rob4you 


Stavog iusto cercando una funzione simile... grazie :)
vedrò di integrarla da qualche parte :)
ciao,
Luca(riello) 

 mi dà altro a cui pensare.
Controlla anche che non riempi l'array all'infinito, quando ero piccolo 
ho fatto un programma che dopo un po degradava le pretazioni per questo 
motivo: Non mi ero accorto che continuavo ad aggiungere elementi ad un 
array di sessione senza mai cancellarli.
-- 
Cordialmente.
Melus.
dal mio e-mail togli i simboli di Zorro.

 vedrò di integrarla da qualche parte :)
Fammi sapere come va a finire...
ciaoo,
rob4you 


Se finirà... metterò messaggi ovunque :s
:) grazie,
Ciao,
Luca(riello) 

 connessi)... ma quale può essere il motivo?
Magari prova a disseminare dei flag qua e là per vedere cosa viene eseguito 
e cosa no, e prova anche ad attivare la "modalità dimmi quante volte 
respiro" dell'error reporting. Cosi magari vedi in dettaglio cosa succede.
Però il fatto che tutto ciò che non è php continua a funzionare a 
meraviglia, indica che si possono escludere problemi legati al server, 
concentrandosi più sulle potenziali cause dei tuoi problemi in php: codice 
che va in stallo, o parametri di impostazione mal settati.
rob4you 

 -- 
Si è quello che avevo pensato. Ora sto tenendo sott'occhio la memoria ma a 
quanto pare non è quella perché è regolare, oscilla tra i 480 e i 500kb.
Grazie :)
ciao,
Luca(riello) 


Tra l'altro una cosa importante:
Quando č bloccato riceve tutti gli input anche se non li elabora. Li elabora 
tutti insieme quando si sblocca 10 minuti dopo.
Ciao,
Luca(riello)

 elabora tutti insieme quando si sblocca 10 minuti dopo.
sembra come se vada in una fase di "coma assistito" che dura 10 minuti. C'è 
da capire se in quell'attesa....non accade assolutamente nulla, oppure 
vengono eseguite delle operazioni, non visibili, legate o meno al codice 
php.
rob4you 

 succede.
Li ho messi i flag come ti dicevo, e si era interrotto nell'operazione di 
svuotare un array e riempirlo, poi è andato avanti e si è fermato ancora in 
una operazione successiva simile.
Inoltre tutti gli altri processi paralleli di php vanno bene. E' solo il mio 
script che si interrompe. (come se ci fosse uno sleep).
Ciao,
Luca(riello)

 script che si interrompe. (come se ci fosse uno sleep).
Non è che per qualche motivo capita a volte che continua a ciclare 
indefinitamente nel ciclo while(true) perchè non si realizza mai la 
condizione di false? Non vorrei quindi che il problema non sia derivato 
direttamente dallo svuotamento dell'array, ma da qualche ciclo chenon 
finisce mai.
Ma a quanto hai impostato il time limit?
rob4you 


0=infinito
ciao,
Luca(riello)
PS: grazie :) 

fanno esattamente la stessa cosa: distruggono l'array.
Secondo me non è proprio la stessa cosa: nel primo caso l'array viene
svuotato ma la variabile rimane settata, nel secondo caso viene
proprio cancellata la variabile.
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Staff di E-Xoopport - 
http://www.e-xoopport.it