Un errore curioso mi sta facendo impazzire:
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 8388608 bytes) in /home/mhd-01/www.pizza-flash.it/htdocs/stuff/sumDoubleItems.ph on line 18
a prescindere dal fatto che 8388608 bytes sono meno di 67108864, e giá per questo non capisco come si possa creare un errore simile, ma il codice che sto eseguendo é veramente molto molto semplice, e non capisco dove sta l'errore. Forse sono stato troppe ore davanti allo schermo e non vedo un ; o un $ mancante....
Ho cercato su google e tra gli altri che ho trovato che avevano il mio stesso problema, non sono riuscito a trovare chi l'abbia risolto, solo conversazioni lunghissime con domande su quante persone navigassero contemporaneamente sui loro forum, o su che versione di software vari stavano utilizzando.
Ho provato a inserire
ini_set('memory_limit', '16M');
come da diverse parti si consiglia, ma il risultato é stato ancora piú assurdo:
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 32 bytes) in /home/mhd-01/www.pizza-flash.it/htdocs/stuff/sumDoubleItems.ph on line 5
La funzione e la classe presenti in questo file che vi allego servono per smaltire le informazioni ridondanti in un cookie contenente oggetti di un carrello elettronico, salvati nella forma NUMEROx:NUMERO#; dove i due numeri rappresentano quantitá e id dell'oggetto.
Quando un utente scegliesse due volte lo stesso oggetto si produrrebbero due semistringhe riferenti allo stesso id, e con il mio codice sto cercando di sommare le quantitá e riprodurre la stessa stringa di partenza senza ripetizioni di id.
<?php
class order_from_string{
public function __construct($order_str){
$temp=explode(":", $order_str);
// le due seguenti espressioni estrapolano ID e QUANTITA dalla stringa del cookie in cui le informazioni sono salvate secondo la forma QUANTITA_1x:ID_1#;QUANTITA_2x:ID_2#;QUANTITA_3x:ID_3#;...ecc
$this->amount=substr($temp[0],0,(strlen($temp[0])-1));
$this->id=substr($temp[1],0,(strlen($temp[1])-1));
}
public $amount=0;
public $id=0;
}
function sumDoubleItems($cookie_string){
ini_set('memory_limit', '16M'); // riga aggiunta senza risultati apparenti
$returnString="";
$order_raw=explode(";", $cookie_string);
$order=Array();
for($i=0; i<count($order_raw); $i++){
$order[$i]=new order_from_string($order_raw[$i]);
}
for($i=0; $i<count($order); $i++){
for($j=0; $j<count($order); $j++){
if($i!=$j && $order[$i]->id==$order[$j]->id){
$tempAmount=$order[$i]->amount+$order[$j]->amount;
$order[$i]->amount=$tempAmount;
unset($order[$j]);
$order=array_values($order);
}
}
}
foreach($order as $o)
$returnString.=$o->amount."x:".$o->id."#;";
return returnString;
}
?>
grazie dell'attenzione