Μεγάλα αρχεία σε Mysql

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
nikos-manias
Δημοσιεύσεις: 38
Εγγραφή: 15 Ιαν 2010 10:13

Μεγάλα αρχεία σε Mysql

Δημοσίευση από nikos-manias » 29 Μαρ 2010 14:25

Καλησπέρα σε όλους!

Έχω δημιουργήσει μια φόρμα όπου επιτρέπει στους χρήστες να υποβάλλουν κάποιο ερώτημα και να επισυνάψουν και κάποιο αρχείο εάν το επιθυμούν.

Εαν ο χρήστης επισυνάψει ένα μικρό αρχείο τότε όλα δουλεύουν ρολόι και το αρχείο αποθηκεύεται σε κάποιο πεδίο στη βάση το οποίο είναι τύπου longblob.

Όταν όμως επισυνάψει ένα μεγαλύτερο αρχείο συμβαίνει το εξής.
Το αρχείο ανεβαίνει κανονικά στον server (μέθοδος POST) και η συνάρτηση
Move_uploaded_file μετακινεί το αρχείο εκεί που έχω ορίσει.
Όταν όμως εκτελέσω το query για να εισάγω το αρχείο στη βάση τότε προκύπτει σφάλμα και τερματίζεται η εκτέλεση.
Το σφάλμα το "πιάνω" με την συνάρτηση die().

Τα directives upload_max_filesize και post_max_size με καλύπτουν πλήρως όσον αφορα το μέγεθος (αν και εφόσον το αρχείο ανεβαίνει στον server δεν νομιζω να ειναι εκει το πρόβλημα).

Μήπως τα πεδία τύπου longblob χρειάζονται διαφορετικό χειρισμό;
Διάβασα επίσης σε άλλο post ότι καλό θα είναι να μην αποθηκεύουμε τα αρχεία στη βάση αλλά μόνο το path. Υπάρχει κάποιος σοβαρός λόγος για αυτο;

Με τον παρακατω κώδικα χειρίζομαι την παραπάνω λειτουργία:


Κώδικας: Επιλογή όλων

$fileHandle=fopen($uploadPath,"r");
					$fileContent=fread($fileHandle,$size);
					$fileContent=mysql_real_escape_string($fileContent);
							
					$query="INSERT INTO files (file_name,user_ID,user_posts_ID,content_ID,type,size,data,timestamp) VALUES ('$file_name','$user_ID','$post_ID','$content_ID','$file_type','$size','$fileContent','$curTime')";
$result=mysql_query($query) or die("Δεν ήταν δυνατή η αποθήκευση του αρχείου!");
		

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Μεγάλα αρχεία σε Mysql

Δημοσίευση από fafos » 29 Μαρ 2010 16:33

Διάβασα επίσης σε άλλο post ότι καλό θα είναι να μην αποθηκεύουμε τα αρχεία στη βάση αλλά μόνο το path. Υπάρχει κάποιος σοβαρός λόγος για αυτο;
auto tha sto pei to hosting (an eisai se pragmatiko server) se ligo kairo an aukshseis ton ogko ton arxeion. Thn apothikeush arxeion sthn vash thn kanoume se poly eidikes periptoseis kai se "varvatous" server. an to kaneis se shared server to pithanotero einai na psaxneis kathe mhna neo hosting afou oloi tha se dioxnoun. Tora, gia to "kremasma" ton megalon arxeion kata thn kataxorhsh prepei na anevaseis kai kapoia limits sthn mysql..

Άβαταρ μέλους
vcore
Δημοσιεύσεις: 354
Εγγραφή: 20 Δεκ 2003 01:19
Τοποθεσία: Crete
Επικοινωνία:

Μεγάλα αρχεία σε Mysql

Δημοσίευση από vcore » 30 Μαρ 2010 00:40

Καλύτερα να προτιμήσεις να αποθυκεύεις το Path στην βάση και το αρχείο να το ανεβάζεις με ftp functions της php.
Easy CMS
------------
Το να ζητάς βοήθεια δεν σημαίνει ότι είσαι εξαρτημένος.

nikos-manias
Δημοσιεύσεις: 38
Εγγραφή: 15 Ιαν 2010 10:13

Μεγάλα αρχεία σε Mysql

Δημοσίευση από nikos-manias » 20 Μάιος 2010 11:41

Τελικά έκανα αυτό που προτείνατε και αποθηκεύω απλά το path.
Σας ευχαριστώ πολύ!

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης