begin process at 2012 05 31 06:53:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Server Web

 > 

Apache

 > 

Problème de mise en cache dans la mémoire (php& apache)


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

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

Administrateur CodeS-SourceS
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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 0,624 sec (3)

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