[PHP]taille maximale d'un .csv

Fermé
theflagada Messages postés 57 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 27 octobre 2009 - 8 oct. 2007 à 11:59
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 8 oct. 2007 à 14:03
Bonjour,
Je souhaite charger le contenu d'un fichier csv ds une bdd. Mon fichier comporte 130000 lignes (66M environ). Je ne comprend pas, il ne veut pas; mon script qui marche tres bien avec des fichiers de petites tailles semble ne pas s executer. la page envoi une requete mais ne passe pas dans ma boucle 'Act'. si quelqu'un a deja eu a faire ce genre de chose, pourriez vous me donner un conseil?
Merci d'avance.
A voir également:

8 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
8 oct. 2007 à 12:21
Bonjour,

De quel façon passes-tu ton fichier au serveur php ? Par un formulaire directement (champ <input type="file">), ou par fopen ou fonction équivalente ?
La question a son importance, parce que sur Apache ou php (je ne sais plus) la taille du champ POST de la requête est limitée par la configuration. Donc dans httpd.conf ou php.ini.

Xavier
0
theflagada Messages postés 57 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 27 octobre 2009 4
8 oct. 2007 à 12:38
Bonjour,
J'ai deja modifie dans php.ini en mettant un temps illimite
je fais de la facon suivante:


<?php


if(@!include_once('./config/config.php')){die("Configuration indisponible. Fin du script.");};
if(!include_once("./config/connect.php")){die("-> Méthode de connexion indisponible. Fin du script.");};
$postactions=Array("noact","Enter");
if(!($dblink=@connect_db($login,$passwd,$server,$db_name)))die("-> Connexion à la BD impossible. Fin du script.");

$dir='./Tempcsv';
if(is_dir($dir)) {
//if(!mkdir('../Photos',0777)) echo '';
}
function recuperer_contenu_csv($url,$separator){
if (file_exists($url)) {
$tab_liste = array();
$liste_ligne = array();
$file_liste = fopen($url, "r");

while (!feof($file_liste)) {
unset($liste_ligne);
$ligne = fgets($file_liste,222122096);

if($ligne!=''){
$liste = explode($separator,$ligne);
while(list($keys,$values) = each($liste)){

$newvalues = $values;
$liste_ligne[] = $newvalues;

}
$tab_liste[] = $liste_ligne;
}
}
fclose($file_liste);
}
else{
$tab_liste = "FichierExistePas";
}
return $tab_liste;
}


if(isset($_POST['act']) && in_array($_POST['act'],$postactions)){ die("laaaaaaaaaaaaaa");

$target = $dir.'/'; // Repertoire cible
$extension =array('csv'); // Extension du fichier sans le .
$max_size = 2000000000; // Taille max en octets du fichier

$nom_file = $_FILES['fichier']['name'];
$taille = $_FILES['fichier']['size'];
$tmp = $_FILES['fichier']['tmp_name'];

// On vérifie si le champ est rempli
if(!empty($_FILES['fichier']['name'])) {
// On vérifie l'extension du fichier
if (in_array(substr($nom_file, -3),$extension)) {
// On récupère les dimensions du fichier
$infos_img = getimagesize($_FILES['fichier']['tmp_name']);
// On vérifie les dimensions et taille de l'image
if(($_FILES['fichier']['size'] <= $max_size)) {
// Si c'est OK, on teste l'upload
if(move_uploaded_file($_FILES['fichier']['tmp_name'],$target.$_FILES['fichier']['name'])) {
// Si upload OK alors on affiche le message de réussite
// $report.= '<b style="FONT-FAMILY: Verdana; FONT-SIZE: 8pt;"> '.$_FILES['fichier']['name'].' was uploaded successfully on the server<br /><br /> ';
}
else {
// Sinon on affiche une erreur système
$report.= '<b style="FONT-FAMILY: Verdana; FONT-SIZE: 8pt;">Problème lors de l\'upload !</b><br /><br /><b>'.$_FILES['fichier']['error'].'</b><br />';
}
}
else {
// Sinon on affiche une erreur pour les dimensions et taille de l'image
$report.= '<b style="FONT-FAMILY: Verdana; FONT-SIZE: 8pt;">Problème dans les dimensions ou taille de l\'image !</b><br /><br />';
}
}
else {
// Sinon on affiche une erreur pour l'extension
$report.='<b style="FONT-FAMILY: Verdana; FONT-SIZE: 8pt;">Your file is not valid!</b><br /><br />';
}
}
else {
// Sinon on affiche une erreur pour le champ vide
$report.= '<b style="FONT-FAMILY: Verdana; FONT-SIZE: 8pt;">uuuuuuuuuuu</b><br /><br />';
}

$filenamecsv=$dir.'/'.$_FILES['fichier']['name'];
//die ($filenamecsv);

include_once('./functions/functions.php');

if ($filenamecsv!=""){
$Content = recuperer_contenu_csv("".$filenamecsv."",",");
//echo $Content.$report;
while(list($index,$contentofile) = each($Content)){ //die ($filenamecsv);






$sq="INSERT INTO report ( `ID`,`NASIdentifier`,`NASPort`,`AcctSessionId`,` AcctStatusType`,`AcctTimeMark`,`AcctDate`,` UserId`,` AcctAuthentic`,`ISPService`,`ServiceType`,`FramedProtocol`,`FramedCompression`,`FramedAddress`,`LoginService`,`LoginHost`,`AcctDelayTime`,`AcctSessionTime`,`AcctInputOctets`,`AcctOutputOctets`,`NASPortType`,`AcctTerminateCause`,`CallerId`,`CallLeg`,`CalledStationId`,`OriginalUserId`,` AcctCharge`,` TimeCharged`,`BytesCharged`,`DollarBankDeducted`,`TimeBankDeducted`,`KBBankDeducted`,`UserName`,`UsageSectionCode`,`SupplierId`,` BuyNumberPrefix`,` CallSuccess`,`BuyCharge`,`Email`)
VALUES ( '','".$contentofile[0]."','".$contentofile[1]."','".$contentofile[2]."','".$contentofile[3]."','".$contentofile[4]."','".$contentofile[5]."','".$contentofile[6]."','".$contentofile[7]."','".$contentofile[8]."','".$contentofile[9]."','".$contentofile[10]."','".$contentofile[11]."','".$contentofile[12]."','".$contentofile[13]."','".$contentofile[14]."','".$contentofile[15]."','".$contentofile[16]."','".$contentofile[17]."','".$contentofile[18]."','".$contentofile[19]."','".$contentofile[20]."','".$contentofile[21]."','".$contentofile[22]."','".$contentofile[23]."','".$contentofile[24]."','".$contentofile[25]."','".$contentofile[26]."','".$contentofile[27]."','".$contentofile[28]."','".$contentofile[29]."','".$contentofile[30]."','".$contentofile[31]."','".$contentofile[32]."','".$contentofile[33]."','".$contentofile[34]."','".$contentofile[35]."','".$contentofile[36]."','".$contentofile[37]."')";

mysql_query($sq);
echo $sq;

$report= '<b style="FONT-FAMILY: Verdana; FONT-SIZE: 8pt;"> '.$_FILES['fichier']['name'].' has successfully been uploaded on the server<br /><br /> ';

//Cleaning of the Tempcsv folder
$dossier='Tempcsv';
if( isset($dossier) && is_dir($dossier)){
SupprimerMyDossier($dossier);
}
}
}




}


$envoifoto='<form method="POST" action="" name="plop" enctype="multipart/form-data"><table><tr><p><label for="photo_1"><b>Price list (.csv)</b> :</label><input size="40" type="file" value="'.$nom_file.'" name="fichier" /></p></tr><tr>
<td style="vertical-align:top;"> </td>
<td style="height:60px;padding:0 0 0 100px;width:20%;text-align:right;"><input type="submit" name="act" value="Enter"><</td>
</tr>
</table> </form>';



?>



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Future-B Price Manager</title>
<link rel="shortcut icon" type="image/x-icon" href="../pictures/fbi.ico" >
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta name="description" content="annonce" />
<META NAME="Adrien Terras" LANG="fr" CONTENT="fiches d'informations ASH" />
<link rel="stylesheet" type="text/css" href="../functions/calendar.css" title="calendar.css" media="screen" />
<script type="text/javascript" src=".../_js/fonctions.js"></script>
<STYLE>

</STYLE>
</head>
<body style="background-color: #ffffff;margin-top: 0px;text-align:left;" >


<?php
echo $envoifoto;

?>


</body>
</html>
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
8 oct. 2007 à 13:31
Merci d'utiliser des balises <code>, parce que là, c'est illisible...
0
theflagada Messages postés 57 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 27 octobre 2009 4
8 oct. 2007 à 13:48
Desole; le voici:

					
<?php


if(@!include_once('./config/config.php')){die("Configuration indisponible. Fin du script.");};
if(!include_once("./config/connect.php")){die("-> Méthode de connexion indisponible. Fin du script.");};
$postactions=Array("noact","Enter");
if(!($dblink=@connect_db($login,$passwd,$server,$db_name)))die("-> Connexion à la BD impossible. Fin du script.");

$dir='./Tempcsv';
if(is_dir($dir)) {
	//if(!mkdir('../Photos',0777)) echo '';
}
function recuperer_contenu_csv($url,$separator){    
 if (file_exists($url))    {
        $tab_liste = array();
        $liste_ligne = array();
        $file_liste = fopen($url, "r");
           
        while (!feof($file_liste))    {
            unset($liste_ligne);
            $ligne = fgets($file_liste,222122096);
           
            if($ligne!=''){
                $liste = explode($separator,$ligne);                   
                while(list($keys,$values) = each($liste)){
	                $newvalues = $values;
                    $liste_ligne[] = $newvalues;
                }                
                $tab_liste[] = $liste_ligne;
            }
        }
        fclose($file_liste);
    }
    else{
        $tab_liste = "FichierExistePas";
    }   
    return $tab_liste;   
}


if(isset($_POST['act']) && in_array($_POST['act'],$postactions)){// die("laaaaaaaaaaaaaa");

	$target     = $dir.'/';  // Repertoire cible
	$extension  =array('csv');      // Extension du fichier sans le .
	$max_size   = 2000000000;     // Taille max en octets du fichier

	$nom_file   = $_FILES['fichier']['name']; 
	$taille     = $_FILES['fichier']['size'];
	$tmp        = $_FILES['fichier']['tmp_name'];

    // On vérifie si le champ est rempli
    if(!empty($_FILES['fichier']['name'])) {
        // On vérifie l'extension du fichier
        if (in_array(substr($nom_file, -3),$extension)) {
            // On récupère les dimensions du fichier
            $infos_img = getimagesize($_FILES['fichier']['tmp_name']);
            // On vérifie les dimensions et taille de l'image
            if(($_FILES['fichier']['size'] <= $max_size)) {
                // Si c'est OK, on teste l'upload
                if(move_uploaded_file($_FILES['fichier']['tmp_name'],$target.$_FILES['fichier']['name'])) {
                    // Si upload OK alors on affiche le message de réussite
                  // $report.=  '<b  style="FONT-FAMILY: Verdana; FONT-SIZE: 8pt;"> '.$_FILES['fichier']['name'].' was uploaded successfully on the server<br /><br /> ';
                } 
				else {
                    // Sinon on affiche une erreur système
                    $report.= '<b style="FONT-FAMILY: Verdana; FONT-SIZE: 8pt;">Problème lors de l\'upload !</b><br /><br /><b>'.$_FILES['fichier']['error'].'</b><br />';
                }
            } 
			else {
                // Sinon on affiche une erreur pour les dimensions et taille de l'image
                $report.= '<b style="FONT-FAMILY: Verdana; FONT-SIZE: 8pt;">Problème dans les dimensions ou taille de l\'image !</b><br /><br />';
            }
        } 
		else {
            // Sinon on affiche une erreur pour l'extension
            $report.='<b style="FONT-FAMILY: Verdana; FONT-SIZE: 8pt;">Your file is not valid!</b><br /><br />';
        }
    } 
	else {
        // Sinon on affiche une erreur pour le champ vide
        $report.= '<b style="FONT-FAMILY: Verdana; FONT-SIZE: 8pt;">uuuuuuuuuuu</b><br /><br />';
    }
		
	$filenamecsv=$dir.'/'.$_FILES['fichier']['name'];
	//die ($filenamecsv);

	include_once('./functions/functions.php');

	if ($filenamecsv!=""){	
		$Content = recuperer_contenu_csv("".$filenamecsv."",",");
		//echo $Content.$report;
		while(list($index,$contentofile) = each($Content)){ //die ($filenamecsv);
			sq="INSERT INTO report ( `ID`,`NASIdentifier`,`NASPort`,`AcctSessionId`,` AcctStatusType`,`AcctTimeMark`,`AcctDate`,` UserId`,` AcctAuthentic`,`ISPService`,`ServiceType`,`FramedProtocol`,`FramedCompression`,`FramedAddress`,`LoginService`,`LoginHost`,`AcctDelayTime`,`AcctSessionTime`,`AcctInputOctets`,`AcctOutputOctets`,`NASPortType`,`AcctTerminateCause`,`CallerId`,`CallLeg`,`CalledStationId`,`OriginalUserId`,` AcctCharge`,` TimeCharged`,`BytesCharged`,`DollarBankDeducted`,`TimeBankDeducted`,`KBBankDeducted`,`UserName`,`UsageSectionCode`,`SupplierId`,` BuyNumberPrefix`,` CallSuccess`,`BuyCharge`,`Email`)
														VALUES ( '','".$contentofile[0]."','".$contentofile[1]."','".$contentofile[2]."','".$contentofile[3]."','".$contentofile[4]."','".$contentofile[5]."','".$contentofile[6]."','".$contentofile[7]."','".$contentofile[8]."','".$contentofile[9]."','".$contentofile[10]."','".$contentofile[11]."','".$contentofile[12]."','".$contentofile[13]."','".$contentofile[14]."','".$contentofile[15]."','".$contentofile[16]."','".$contentofile[17]."','".$contentofile[18]."','".$contentofile[19]."','".$contentofile[20]."','".$contentofile[21]."','".$contentofile[22]."','".$contentofile[23]."','".$contentofile[24]."','".$contentofile[25]."','".$contentofile[26]."','".$contentofile[27]."','".$contentofile[28]."','".$contentofile[29]."','".$contentofile[30]."','".$contentofile[31]."','".$contentofile[32]."','".$contentofile[33]."','".$contentofile[34]."','".$contentofile[35]."','".$contentofile[36]."','".$contentofile[37]."')";
					
			mysql_query($sq);
			//echo $sq;
			$report=  '<b  style="FONT-FAMILY: Verdana; FONT-SIZE: 8pt;"> '.$_FILES['fichier']['name'].' has  successfully been uploaded on the server<br /><br /> ';
								
			//Cleaning of the Tempcsv folder
			$dossier='Tempcsv';
			if( isset($dossier) && is_dir($dossier)){
			SupprimerMyDossier($dossier);
			}
		}
	}	
}
	
$envoifoto='<form method="POST" action="" name="plop" enctype="multipart/form-data">
				<table>
					<tr>
						<p><label for="photo_1"><b>Price list (.csv)</b> :</label><input size="40" type="file" value="'.$nom_file.'" name="fichier" /></p>
					</tr>
					<tr>
						<td style="vertical-align:top;"> </td>								
						<td style="height:60px;padding:0 0 0 100px;width:20%;text-align:right;"><input type="submit" name="act" value="Enter"><</td>								
					</tr>
				</table>		
			</form>';	



?>



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Future-B Price Manager</title>
<link rel="shortcut icon" type="image/x-icon" href="../pictures/fbi.ico" >
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta name="description" content="annonce" />
<META NAME="Adrien Terras" LANG="fr" CONTENT="fiches d'informations ASH" />
<link rel="stylesheet" type="text/css" href="../functions/calendar.css" title="calendar.css" media="screen" />
<script type="text/javascript" src=".../_js/fonctions.js"></script>
<STYLE>

</STYLE>
</head>
<body style="background-color: #ffffff;margin-top: 0px;text-align:left;" >
 

<?php
echo $envoifoto;

?>


</body>
</html>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
8 oct. 2007 à 13:53
OK.
Donc tu utilises bien un fichier transmis par formulaire, que tu récupères avec $_FILES['fichier']['name'].

Je réitère donc : il faudrait que tu fouilles la configuration de php et d'apache pour vérifier quelle est la taille maximale admise des requêtes http (le fichier étant transmis dans la requête !).

Je ne parle pas du timeout qui représente le temps de traitement, mais bien de la taille en Mo qu'accepte Apache (ou php) sur une seule requête !

Je suis actuellement au boulot, et n'ai pas sous la main de serveur php ni apache qui me permette d'aller voir où se situe cette info. Mais je sais qu'elle existe, je te laisse fouiller :)

Xavier
0
theflagada Messages postés 57 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 27 octobre 2009 4
8 oct. 2007 à 13:54
Merci beaucoup; je vais aller chercher ca....
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
8 oct. 2007 à 14:01
J'ai cherché sur le net en fait :)

Donc c'est dans php.ini.
Il y a deux directives qui peuvent influer :
memory_limit (par défaut, 8M)
et
post_max_size (par défaut 8M)

A priori c'est d'abord sur la deuxième qu'il faut agir. Ensuite ça dépend de comment fonctionne un serveur php, mais s'il est bien fait la première restriction (taille de mémoire limitée) ne doit pas géner.
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
8 oct. 2007 à 14:03
Une autre en fait !
upload_max_filesize, qui vaut 2M par défaut.

post_max_size doit forcément être plus grand que upload_max_filesize.

Donc pour ton exemple, tu peux placer upload_max_filesize à 70M et post_max_size à 71M
0

Discussions similaires