begin process at 2010 03 22 15:39:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

insertion de gros fichier dans un longblob mysql


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

insertion de gros fichier dans un longblob mysql

samedi 2 juin 2007 à 18:29:33 | insertion de gros fichier dans un longblob mysql

misterzinzin

bonjour,
je viens d'essayer d'insérer un fichier dans un longblob avec mi-succes.
je dis ca car les petit fichier < à la taille d'un mp3 passe mais un mp3 (3mo ou plus) ne passe pas...

voici une partie de mo code en php

ajouteFichier($HTTP_POST_FILES['fichier'],$HTTP_POST_VARS['description']);

et le code de la fonction

function ajouteFichier($infoFichier,$description)
{
if($infoFichier['tmp_name']=='') erreur('fichier introuvable');
$db = mysql_connect("localhost","root","...")
or erreur("erreur de connexion &agrave; la base de donn&eacute;e");
if($db!=0)
{
mysql_select_db("forum",$db) or erreur(mysql_error()) ;
$requete = "insert into fichiers(id_user,description,nom,type,taille,fichier) values ('".
addslashes($_SESSION['id_login'])."','".
addslashes($description)."','".
addslashes($infoFichier['name'])."','".
addslashes($infoFichier['type'])."','".
addslashes($infoFichier['size'])."','".
addslashes(fread(fopen($infoFichier['tmp_name'],"rb"),filesize($infoFichier['tmp_name'])))."')";
mysql_query ($requete,$db) or erreur(mysql_error()) ;
mysql_close($db);
}
}
evidemment, comme on le voit, tout le fichier est passé dans une grosse requete.
y a-t-il moyen de passer le fichier dans plusieur requete ou alors une autre technique ?
en tout cas moi je dois avouer que je ne connais rien d'autre :-(
pouvez vous m'aider ?


moi, le seul, l'unique, ZinZin [:I]
samedi 2 juin 2007 à 18:37:13 | Re : insertion de gros fichier dans un longblob mysql

misterzinzin

j'ai oublié de dire que j'ai l'erreur:

if($infoFichier['tmp_name']=='') erreur('fichier introuvable');
donc maintenant que j'y pense, le probleme se situe avant d'envoyer vers la base de donnée.
donc je supose qu'il y à une limite au niveau du serveur web (apache)

moi, le seul, l'unique, ZinZin [:I]
samedi 2 juin 2007 à 19:42:25 | Re : insertion de gros fichier dans un longblob mysql

J_G

Genau !!!

La taille des fichiers uploadable est au moins limités deux fois par ton serveur :
Config Apache (je ne sais pas trop où)


Config php.ini

Related Configurations Note: See also the file_uploads, upload_max_filesize, upload_tmp_dir, post_max_size and max_input_time directives in php.ini



A voir aussi : http://de2.php.net/manual/en/features.file-upload.errors.php


A+

dimanche 3 juin 2007 à 10:31:27 | Re : insertion de gros fichier dans un longblob mysql

misterzinzin

oui effectivement, en modifiant la ligne
upload_max_filesize = 2M
par
upload_max_filesize = 200M
le fichier est apparement bien uploadé
maintenant, c'est au niveau de mysql que ca coince
mysql_error() me retourne ceci:

MySQL server has gone away

que veut dire ce message ?

moi, le seul, l'unique, ZinZin [:I]
dimanche 3 juin 2007 à 10:56:15 | Re : insertion de gros fichier dans un longblob mysql

misterzinzin

apparement, ca vient de la requete sql qui est trop grande.
en effet, si on exécute (dans phpmyadmin par exemple)
SHOWVARIABLES
on recupere toute une série de variable dont:
max_allowed_packet    1047552
il faut donc changer cette variable avant d'envoyer une grosse requete:
SET GLOBAL max_allowed_packet=200000000

et maintenant ca marche.
donc en résumé, il faut modifier le fichier php.ini:
upload_max_filesize = 200M

puis après avoir redémarré le serveur (ou autre manipulation permettant de faire relire le fichier de config)

exécuter la requete sql suivante

SET GLOBAL max_allowed_packet=200000000

(oui bon... ca ne fait pas vraiment 200 MO mais bon...)

remarque: il y à surement moyen de le faire directement en passant par le fichier de config de mysql mais je ne l'ai pas touvé.

donc maintenant ca passe très bien avec un fichier mp3

Cristina Aguilera - Hurt.mp3audio/mpeg5552128[BLOB - 5,3 Mio]2007-06-03 10:48:12
mais... pas avec un fichier de 75Mo
donc il doit y avoir une autre limitation (apache ?)


moi, le seul, l'unique, ZinZin [:I]
dimanche 3 juin 2007 à 11:11:44 | Re : insertion de gros fichier dans un longblob mysql

misterzinzin

j'avais oublié de modifier
post_max_size = 8M
par
post_max_size = 200M

évolution de l'histoire:
avant, avec mon fichier de 75Mo je n'avais pas d'erreur mais ca ne marchais pas
maintenant, ca marche.
cependant, en regardant l'évolution de la mémoire ram... ca fait assez peur.
en fait tout le fichier est stocké en ram et donc pour un pc qui est en général à 900Mo de ram utilisé, j'ai eu des pointe jusqu'a 1,2Go lors de l'upload de mon fichier.
donc 300Mo pour un fichier de 75Mo
mon hypothése:
75*2 (pour le addslashes)=150Mo en cache de apache (ou php?)+les 150Mo du fichié transféré en mémoire vers mysql
mais on... ca marche.

je pense que je n'atteindrait jamais la limite d'un longblob (4Go)...

moi, le seul, l'unique, ZinZin [:I]
dimanche 3 juin 2007 à 11:17:20 | Re : insertion de gros fichier dans un longblob mysql

misterzinzin

Réponse acceptée !
donc en résume:
pour utiliser plainement les blob de mysql:
modifier php.ini (chercher les variables et les modifier)
post_max_size = 200M
upload_max_filesize = 200M
puis redémarrer apache.
ensuite: exécuter la requete sql suivante
SET GLOBAL max_allowed_packet=200000000
en principe: replacer GLOBAL par SESSION et exécuter juste après la requete d'ajout de fichier serait plus raisonable.
pour les test j'ai utilisé movamp sous windows xp sp2
j'imagine que sous linux le principe reste le meme.

merci J_G pour tes liens très intéressant :-)

moi, le seul, l'unique, ZinZin [:I]


Cette discussion est classée dans : fichier, mysql, db, addslashes, infofichier


Répondre à ce message

Sujets en rapport avec ce message

transformer une db mysql en fichier xml [ par charbouba ] Bonjour.En faite je transforme une requete sql en fichier xml.cette requete retourne le groupeid ,le nom,leprenom de l utilisateur.Je veux obtenir un insertion des fichiers dans mysql [ par djomsroset ] slt a tousj'aimerais savoir le type de donnees mysql a utiliser quand on veut inserrer dans sa BD un fichier (une image, un fichier PDF, word, wma,mp3 xml ou mysql [ par adamess ] bonjour ,je veux savoir est ce que l'accès un fichier xml plus rapide para-port une base donnes MySQL ?et combien de nombre connexion simultanée peut Les fichiers [ par Bumcello ] Bonjour,Le script suivant sert à uploader des images de types differents. Et donc si je choisis un fichier jpeg cela ne fonctionne pas cela m'affiche Authentification [ par gabsia ] Salut J'ai un problème d'autentification: Je suis entrain de créer un site comme étant projet, Ce site dynamique : l'utilisateur doit s'y inscrire Fonction mail [ par yoarf ] Bonjour,Je voudrais envoyer une newletter par paquets (adresse e-mail dans une table), en utilisant le champs CCI.Pouvez-vous me donner votre avis ? C htaccess pour eviter le hot linking.... problème [ par loupile ] Bonjour alors voila mon problème sur mon site j'ai des videos ... un concurrent les a reperés et c'est empressé de faire de liens dessus ..au debut j' inserer donnes dans une base mysql [ par kelm_by ] salut tous le monde,j'ai un fichier txt ou il ya 1000ligne du genre:&#1605;&#1581;&#1605;&#1583;  &#1607;&#1606;&#1610;&#1583;&#1610;&#1605;&#1581;&#1 Verification pseudo MYSQL [ par poitierjohan ] Bonjour,Voici un code que j'ai testé (pour un page web), mais celui-ci ne foncionne pas...En quoi consiste-t-il? Il devrait me vérifié si un pseudo es Comment appeler une procedure stockees en PHP et retourner un parametre? [ par ed1982 ] Bonjour a tous, Je voudrai savoir comment appeler une procedure stockee (Mysql) dans ma fonction php. J aimerai savoir comment retourner le parametr


Nos sponsors


Appels d'offres

Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,295 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales