Errore allowed memory size su mysql_fetch_array

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio

Monital

Utente Attivo
15 Apr 2009
778
2
18
Arieccoci

speroc he nons ia quelloc he penso cmq ieri ho migrato unos cript da uns erver ad un altro

il primo usa PHP 5.2.17, ma los cript fu creato con il php4(non so se c'entra) il nuovo serve il 5.3.21

nel primos erver los cript funzioan più che bene nel secondo mi da l'errore in oggetto e me lo riporta alla riga dove è presente il while di una query

PHP:
while ($riga = mysql_fetch_array($res, MYSQL_ASSOC)) {

ora so che con il 5 alcune funzioni sono andate deprecate, sul server aruba (sito eprsonale) avevo avuti problemi con mysql_num_row,ad esempio.

Ora dal manuale credo dia ver capito che il mysql_fetc_array è deprecato quindi mò come faccio? ho centinaia di istruzioni del genere in tutto lo script.

Non riescoa acapire come viene sostituita la sintassi.

O magari dipende veramente solo dallo spazio allocato(ma non penso e non so nemmeno che sia) e a quanto apre sul server non ho il file php.ini(da phpinfo vedo che ho 32M in memory_limit)
 
Beh, sarebbe la volta buona per passare a mysqli o pdo, comunque prova ad aumentare il memory_limit dalla configurazione o tramite ini_set()
 
Beh, sarebbe la volta buona per passare a mysqli o pdo, comunque prova ad aumentare il memory_limit dalla configurazione o tramite ini_set()
ma per far questo basta cambiare il codice? cioè si può usare sempre il database mysql?
 
Allora dal link datomi da borgo ho inziiato a leggere ed allora ho fatto subito una prova

PHP:
$col_amon = 'mysql:host=localhost;dbname=nome_db';
// blocco try per il lancio dell'istruzione
try {
  // connessione tramite creazione di un oggetto PDO
  $db_amon = new PDO($col_amon , 'nome_utente', 'password');
}
// blocco catch per la gestione delle eccezioni
catch(PDOException $e) {
  // notifica in caso di errorre
  echo 'Attenzione: '.$e->getMessage();
} 

$sql = 'SELECT * FROM tabella  ORDER BY ID';  
// visualizzazione dei risultati
foreach($db_amon->query($sql) as $linea){  
$id=$linea['ID'];
$nome=$linea['nome'];
var_dump($nome);  
}

ovviamene togliendo il codice originario. risultato?

Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 32 bytes) in /home/nome/www/cartella/cartellina/pippone.php on line 99

ed alla riga 99 c'è esattamente
PHP:
foreach($db_amon->query($sql) as $linea){

praticamente quello che sostituisce il qhile e mysql_fetc_array quindi il problema non è PDO

ora voelvo provare



Beh, sarebbe la volta buona per passare a mysqli o pdo, comunque prova ad aumentare il memory_limit dalla configurazione o tramite ini_set()

però non ho accesso al file php.ini, l'ho cercato enlla cartella di dovere ma niet. vediamoini_set ma ne dubito fortemente
 
però non ho accesso al file php.ini, l'ho cercato enlla cartella di dovere ma niet. vediamoini_set ma ne dubito fortemente

Prova aumentando i MB, esempio
PHP:
ini_set('memory_limit','64M');
 
Prova aumentando i MB, esempio
PHP:
ini_set('memory_limit','64M');

andata cribbio :byebye::byebye::byebye:

gesu mio che pauuuuuuuuuuuuuura che mi sono preso, ci sto da stammatina sopra, ora posso tornare dalla mia famiglia...

moglie??????????????????????????Bambina?????????????????????????????? PAPA' è tornato

cavolo qua ho finito la memoria ma loro hanno finito la pazienza :mavieni::mavieni::mavieni:

Vabbè c'èa ncora qualche errore in giro mi sa comunque che dopo sta paura mi tocca pian pianello passare a PDO


Grazie ragazzi. adesso urge il problema <img> :hammer::hammer::hammer:
 
ah sorry ne approfitto epr fare una domanda veloce visto sto fatto della memoria

se chiudo la connessione aò db che di norma la pro una volta sola pèer tutta la sessione dello script se dopo questa query inserisco mysql_free_result per cancellare i dati della query dalla emoria perdo i dati di quella query che ho isnerito come dati $_SESSION?
 
ah sorry ne approfitto epr fare una domanda veloce visto sto fatto della memoria

se chiudo la connessione aò db che di norma la pro una volta sola pèer tutta la sessione dello script se dopo questa query inserisco mysql_free_result per cancellare i dati della query dalla emoria perdo i dati di quella query che ho isnerito come dati $_SESSION?
Non dovrebbe perché ormai sono passati alla sessione comunque mysql_free_result() usalo se hai query particolarmente ingombranti anche se sarebbe meglio migliorare ogni singola query in modo che non consumi troppo.
 

Discussioni simili