Accueil > Forum > > > > Problème de mise en cache dans la mémoire (php& apache)
Problème de mise en cache dans la mémoire (php& apache)
dimanche 3 août 2008 à 09:51:54 |
Problème de mise en cache dans la mémoire (php& apache)

oshin
|
Salut à tous, J'ai un GROS problème URGENT. J'ai un serveur dédié avec apache et php installé : Apache/1.3.37 (Unix) mod_gzip/1.3.19.1a PHP/4.4.4 mod_ssl/2.8.28 OpenSSL/0.9.6m
et sur mon serveur web tourne un script d'upload et donc, avec des liens de download pour télécharger ces mêmes fichiers.. Mon problème est le suivant :
Lorsque quelqu'un clique pour TELECHARGER un fichier, apache ou php, le charge en mémoire avant de lancer le téléchargement. Sur de petit fichier ça ne pose aucun problème, mais sur des gros fichiers de 700mo, ça démoli toute la ram et le swap...
Ma question est la suivant :
Quel réglage dois je faire sur php ou apache pour arrêter cette mise en cache des données en mémoire ? Je n'arrive pas à trouver et google ne m'a guerre aidé.. !
|
|
dimanche 3 août 2008 à 10:16:07 |
Re : Problème de mise en cache dans la mémoire (php& apache)

Bling 182
|
Tu proposes le téléchargement de quelle facon ?
Donne le code de ta page de téléchargement.
-- Développeur web freelance - Bling182 Dev : http://freelancedev.ovh.org - http://www.bling182.fr
|
|
dimanche 3 août 2008 à 11:28:35 |
Re : Problème de mise en cache dans la mémoire (php& apache)

oshin
|
Voici le code de la page qui lance le téléchargement. En faite... c'est le readfile qui charge en mémoir le fichier avant.. mais en local sur mon ordinateur sous php5 et apache2 j'ai pas ce probleme.. je pense pas que ça vienne du fait que j'ai php4 ?
<?php
define('UPLOAD_SAFE',true); if(file_exists('./includes/config.php')) { include('./includes/config.php'); include('./includes/tools.php'); // ip a bloquer - chaque ip separé par une virgule $upload_cfg['_ip_blackliste'] = generate_banlist($upload_cfg['_rep_script'].'/includes/'); } else exit('Le fichier config.php n\'est pas au bon endroit.');
// utilisateurs de FREE : penser à creer un repertoire sessions à la racine de votre site session_start();
// est ce que l'on est dans la liste des ip banni ? if(in_array($_SERVER['REMOTE_ADDR'],$upload_cfg['_ip_blackliste'])) exit('<p>Votre IP est banni du service de téléchargement.</p>');
// est ce que l'on demnde un mot de passe pour accéder au système d'upload ? if($upload_cfg['_use_password_view'] === true) { if((!isset($_SESSION['myphpupload_user_password']) || $_SESSION['myphpupload_user_password'] != $upload_cfg['_user_password']) && !check_connexion($upload_cfg['_admin_login'], $upload_cfg['_admin_pass'])) { include('./connexion.php'); exit(); } }
// on recupere l'id du fichier à affiché if(!isset($_GET['i']) || empty($_GET['i'])) exit("Paramètres manquants"); else $id = quote_smart($_GET['i']);
$requete = "SELECT id,ref,date,file,ip,nbr_view,nbr_dl FROM ".$upload_cfg['_sqltable']." WHERE ref='$id'"; $sql = mysql_query($requete); $nbr = mysql_num_rows($sql);
if($nbr == 0) exit('Fichier invalide'); else { $post = mysql_fetch_array($sql); $fichier = $post['file']; $date = $post['date']; }
// on doit verifier que le fichier existe belle et bien. on pourrai avoir supprime le fichier mais pas l'enregistrement dans la base if(!file_exists($upload_cfg['_rep_secret'].'/'.$fichier)) exit("Fichier inexistant");
// y'a t'il une limitation sur temps ? $now = mktime(); if($upload_cfg['_limite'] == 1) { // si oui, on test la validité $max_validite = $date + $upload_cfg['_limite_validite']; if($max_validite < $now && !check_connexion($upload_cfg['_admin_login'], $upload_cfg['_admin_pass'])) exit("Fichier périmé"); }
// incremente de +1 les telechargements $nbr_dl = ($post['nbr_dl']+1); mysql_query("UPDATE ".$upload_cfg['_sqltable']." SET nbr_dl='$nbr_dl' WHERE ref='$id'");
$urlFichier = $upload_cfg['_rep_secret'].'/'.$fichier;
// le nom de fichier $filename = substr($fichier,32);
// son extension $ext = get_file_ext($fichier);
// selon l'extension on choisi le type d'entete a declarer switch($ext) { case "gz": $type = "application/x-gzip"; break; case "tgz": $type = "application/x-gzip"; break; case "zip": $type = "application/zip"; break; case "pdf": $type = "application/pdf"; break; case "psd": $type = "application/psd"; break; case "eps": $type = "application/eps"; break; case "png": $type = "image/png"; break; case "gif": $type = "image/gif"; break; case "jpg": $type = "image/jpeg"; break; case "txt": $type = "text/plain"; break; case "htm": $type = "text/html"; break; case "html": $type = "text/html"; break; default: $type = "application/octet-stream"; break; }
// on envoi les entetes - important pour que le telechargement se lance meme si le navigateur voudrai l'ouvrir. header("Content-disposition: attachment; filename=".$filename); header("Content-Type: application/force-download"); header("Content-Transfer-Encoding: $type\n"); header("Content-Length: ".filesize($urlFichier)); header("Pragma: no-cache"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public"); header("Expires: 0");
// on lance le telechargement readfile($urlFichier);
//Phpstats define('__PHP_STATS_PATH__','/home/upme/www/phpstats/'); include(__PHP_STATS_PATH__.'php-stats.redir.php');
exit(); ?>
|
|
dimanche 3 août 2008 à 12:11:53 |
Re : Problème de mise en cache dans la mémoire (php& apache)

Bling 182
|
Oui, si tu fais un readfile, il va charger le fichier en mémoire... Php5 est surement plus optimisé, et le charge par bouts.
-- Développeur web freelance - Bling182 Dev : http://freelancedev.ovh.org - http://www.bling182.fr
|
|
dimanche 3 août 2008 à 12:30:03 |
Re : Problème de mise en cache dans la mémoire (php& apache)

oshin
|
Effectivement, le problème vient de php4 qui fait "chier", le problème c'est que j'ai un dédie redhat 7.2 de chez ovh... une usine à gaz, pour installer php5 la dessus, c'est la merde. Grr -_-
Je crois que je vais installer debian et faire une install propre avec ce que j'ai besoin :P
|
|
dimanche 3 août 2008 à 13:23:12 |
Re : Problème de mise en cache dans la mémoire (php& apache)

coucou747
|
salut
remplace
readfile($urlFichier);
par un fopen, un while, un feof, un fread, et un fclose
t'as des exemples sur la page :
http://fr2.php.net/fopen
notement un truc genre :
while(!feof($proxy_fp)) {$proxy_cont .= fread($proxy_fp,4096);}
|
|
Cette discussion est classée dans : problème, php, apache, mémoire, cache
Répondre à ce message
Sujets en rapport avec ce message
PHP sous IIS > Problème avec fonctions [ par HOFMIC ]
Hello,J'ai un gros problème j'ai fait un petit site en php qui récupère des infos sur des fichiers textes malheureusement en passant d'un serveur Apac
Problème d'installation Apache 2.0/PHP 5.0/MySQL 4.1 [ par sbertho ]
J'ai essayé de suivre la procédure décrite dans le tuto http://www.phpcs.com/tutorial.aspx?ID=94, mais lorsque je lance Apache, j'ai le message d'erre
Problème Apache 2.2.2 et PHP 4.4.2 [ par PaTaTe ]
Bonjour,J'ai un petit soucis avec Apache 2.2.2 en definissant PHP dans httpd il me dit "Le module sp\xe9cifi\xe9 est introuvable" ... Je ne sais pas d
PB installation PHP 5.2.8/Apache 2.2.11/Windows 2003 server [ par accros ]
Bonjour, j'ai un problème sur lequel je bute.J'ai installé sur mon poste perso (en XP Pro) une suite PHP 5.2.8 et Apache 2.2.11 et je n'ai pas de prob
Problème php javascript [ par neoscars ]
Bonjour,J'ai une petite question (pour une petite réponse ).J'ai un script php qui me permet d'afficher tous les champs d'une bdd mysql dans un tablea
swiftMailer [ par lucwoods ]
Bonjour,Je vous expose mon problème. Je réalise pour le moment une newsletter en php. Pour ça, j'avais utiliser PHPMailer mais apparemment, il y a un
problème de formulaire php [ par lenfanta ]
récuperer le chemein d'une image [ par lamiae2 ]
bonjour;j'ai un problème depuis une semaine,pour upload une image dans un pop up.mon chef m'a demandé de créer un formulaire ajouter.php pour remplir
Problème avec sessions et headers [ par thedeejay ]
Bonjour à tous!Je suis en train de programmer mon CMS et j'ai un petit problème...En effet lorsque je me connecte, les pages affichent:Warning: sessio
problème script d'authentification : [ par Pilotwings ]
Bonjour à toutes et à tous, j'ai réalisé un script d'authentification qui fait appel à une boîte de dialogue. Le problème, c'est que je ne sais pas po
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|