Page 1 sur 1

Upload php et cache memoire.

Posté : 05 sept. 2007, 16:14
par Jose
Bonjour,


J'aimerais savoir s'il etait possible, lors d'upload en php d'ecrire directement sur le disque dur, plutot qu'en memoire et ensuite sur ce dernier ?
Comment fonctionnent les sites d'upload genre rapidshare and co ou l'on peut uploader plusieurs Go ?
Ils ont quand meme pas l'equivalent en ram, ca en demanderait beaucoup trop dans une journee..
(Ou est-ce qu'il ya du perl derriere ou quelque chose comme ca ?)

Posté : 05 sept. 2007, 17:24
par Ryle
Euh.. tu es sur qu'en php cela ne va pas directement sur le disque dans le dossier temporaire ?

En effet, tu peux très bien paramétrer apache pour recevoir des fichiers de 2Go... le fichier est ensuite supprimé s'il n'est pas déplacé avec un move_uploaded_file(), mais il est quand même bel et bien stocké sur le disque :)

Posté : 05 sept. 2007, 17:48
par Jose
Il est stocke sur le disque, mais apres avoir ete dans la memoire vive.
Tu peux essayer en limitant la memoire allouee par php a 2Mo et en uploadant un fichier de 1,8Mo par exemple (c'est transforme en b64, ca prend plus de place), ca ne passera pas.
Ce n'est qu'apres tout ce passage que le fichier est present sur le disque et que tu peux faire un move_uploaded_file();

Posté : 05 sept. 2007, 18:00
par Hubert Roksor
Que le fichier soit stocké dans la RAM me paraît étrange aussi :
c'est transforme en b64, ca prend plus de place
Je ne suis pas sûr de comprendre ce passage. Si tu modifies le fichier en PHP alors en effet tu vas te retrouver à la charger en mémoire (à moins d'utiliser un stream) mais sinon je ne pense pas que ce soit le cas. Les bouts de fichier passent par la mémoire, mais ils doivent être sauvegardés au fur et à mesure et je doute que ce soit par morceaux plus gros que quelques dizaines de KiB... Je penche pour un problème de script, essaie avec un script minimaliste pour voir ?

Posté : 05 sept. 2007, 22:15
par Sékiltoyai
Au passage aussi, la taille de la mémoire alloué à PHP n'a rien avoir avec la taille maximale d'upload. Lors d'un up de fichier c'est apache qui gère le transfert, qui copie le fichier dans un dossier temporaire, et ensuite seulement ton script intervient sur le fichier, avec move_uploaded_file() pour le changer de répertoire.
C'est seulement ensuite que tu peux avoir des problèmes de mémoire si tu essayes de lire le fichier, par exemple si tu ouvres une image de 50Mo avec la librairie GD. Mais comme le dit si bien Hubert, ton fichier est uploadé par bouts, et rien ne passe par la ram durant le transfert de fichier.

Posté : 06 sept. 2007, 18:20
par Jose
C'est bien ce que je pensais au debut.
C'est l'admin sys de ma boite qui pensait cela parcequ'il a ce probleme avec un client et son script d'upload.
Visiblement il doit faire un traitement mais on sait pas trop quoi...

Ca me parait deja beaucoup plus logique.

Merci pour la reponse :)