le 12/02/2009 à 09:37
Dézipper un fichier : trop grosse consommation de mémoire
Bonjours tous le monde j'ai un petit probléme avec la taille d'un fichier.
J'ai une petit fonction qui doit dézipper un fichier . Elle marche bien, je m'en suis servi de nombreuse fois. Cependant dés que le fichier devien trop gros plus rien ne va.
voila le code de ma fonction :
quand j'execute le code on me retourne l'erreurs suivante :
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 209684883 bytes) in /var/www/dev-ant/Fonction_dezipper.php on line 26
Régler ce genre de soucis est assez simple normalement on va dans le php.ini et on augmente l taille limite. Cependant pour de raison qui serait trop longue a expliquer je ne peu pas modifier le php.ini.
Une autre solution aurait été possible avec ce code :
il est sencé modifier la taille limite juste la durée de l'execution du code. Cependant ce n'est pas compatible avec tout les serveur et apparement le mien en fait parti car méme avec cette cela ne change rien.
Voila voila donc si quelqu'un a une solution pour ce probléme je l'en remercierai infiniment
merci d'avance
J'ai une petit fonction qui doit dézipper un fichier . Elle marche bien, je m'en suis servi de nombreuse fois. Cependant dés que le fichier devien trop gros plus rien ne va.
voila le code de ma fonction :
nom_du_fichier
<?php
<?php
Dezipper('test.zip');//appel la fonction Dezipper
function Dezipper($Fichier)
{
$a1="/var/www/dev-ant/tmp/";
//$a2="c:\\wamp\\www\\";
$destination=$a1;
$df=$destination.$Fichier;//on concatene destination et fichier pour obtenir l'adresse final du fichier à dézipper
$zip = zip_open($df);//ouvre le fichier .zip pour le lire
//$zip = zip_open($Fichier);//ouvre le fichier .zip pour le lire
$zip_entry = zip_read($zip);//Pour chaque fichier contenu dans le fichier zip
//$zip_entry = zip_read($zip)//récupére le fichier contenu dans l'archive
$nom_fichier = zip_entry_name($zip_entry);// recupére le nom de l'entrée
//echo $nom_fichier;
$cf=$destination.$nom_fichier;//on concatene destination et fichier pour obtenir l'adresse final ou sera reporter le contenu du fichier dézipper
echo $cf;
zip_entry_open($zip, $zip_entry, "r");//on ouvre l'entrée en lecture
$fd = fopen($cf, "w");//on ouvre le dossier en ecriture
echo test;
fwrite($fd, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)));// on ecrit dans le fichier
fclose($fd);//on ferme le fichier
zip_entry_close($zip_entry);//on ferme l'entree
zip_close($zip);//on ferme le fichier zip
echo "Fichier dezippe";
//$ok = unlink($cf);
}
?>
?>
quand j'execute le code on me retourne l'erreurs suivante :
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 209684883 bytes) in /var/www/dev-ant/Fonction_dezipper.php on line 26
Régler ce genre de soucis est assez simple normalement on va dans le php.ini et on augmente l taille limite. Cependant pour de raison qui serait trop longue a expliquer je ne peu pas modifier le php.ini.
Une autre solution aurait été possible avec ce code :
<?php test=ini_set("memory_limit","67M");//augmente la limite de memoire ?>
il est sencé modifier la taille limite juste la durée de l'execution du code. Cependant ce n'est pas compatible avec tout les serveur et apparement le mien en fait parti car méme avec cette cela ne change rien.
Voila voila donc si quelqu'un a une solution pour ce probléme je l'en remercierai infiniment
merci d'avance