ok ok...questo script è un disastro...
comunque ho provato a metter mano ad alcune cose:
In realtà il file che sto caricando (ma è solo per fare delle prove) è di 32,6Mb (34235626 byte per essere pignoli) e comunque portando tutte le quote (memory_limit, post_max_size, upload_max_filesize e max_allowed_packet) a 128Mb non miglioro la situazione.Vuoi caricare file da 64MB ma php ha massimo 64MB a disposizione.
Giustissimo...in effetti perché sprecare memoria in questo modo??? Ora utilizzo solamente la variabile $content, ma nonostante ciò nulla cambia.Così eviti di istanziare due variabili praticamente identiche che ti occupano memoria per niente.
Ok, fatto, ma ancora niente. A riguardo però vorrei chiedere un paio di cose:[...]ti consiglio vivamente di usare mysql_real_escape_string[...]
mysql_real_escape_string prende due parametri, la stringa su cui operare e la connessione al database. È giusto usarla così:
Ho visto sul manuale di php che il secondo argomento è opzionale. Che differenza c'è? Comunque in entrambi i casi ancora non riesco a farlo andare,Codice PHP:$db = mysql_connect($host, $user, $pwd);
$content = mysql_real_escape_string($content, $db);
Ora la variabile $content subisce le seguenti trasformazioni (dal 1° all'ultimo utilizzo che ne faccio):Con
$content = " bla bla bla data='".mysql_real_escape_string($content,$dbresou rce)."' bla bla;";
vai tranquillo.
Non so se ancora sbaglio qualcosa, perché ancora non funziona...Codice PHP:$content = fread($hdl, filesize($tmpName));
$content = mysql_real_escape_string($content, $db);
$content = "INSERT INTO download (nome, file, descr) VALUES ('$fileName', '$content', '$descr')";
mysql_query($content);
Ho notato però che il problema è l'esecuzione di mysql_query perche se metto così:
Mi scrive BAD!!! come previsto. Però non riesco proprio a capire qual'è il problema...Codice PHP:if (mysql_query($content)) {
echo "GOOD!!!";
} else {
echo "BAD!!!";
}
A questo punto non so se risiede nella formulazione della query (con i relativi problemi di escape e dimensioni) o se c'è qualche altra impostazione che mi limita la dimensione dei dati. Il campo è di tipo LONGBLOB che secondo il manuale mysql può contenere fino a 4 GiB (ben lontano dai 32Mb).
Ho anche il sospetto di essere in crisi per una scemenza, ma non so come uscirne...ragazzi scusatemi per il casino che sto tirando in ballo e abbiate pietà di me!!!

Rispondi quotando