fatal error : maximum execut... sur un upload... A L'AIDE !!

Eléphanteau du PHP | 24 Messages

07 juil. 2006, 16:07

Bonjour,

je bloque sur une erreur d'upload...
Mon script fait afficher l'erreur suivante :
Fatal error: Maximum execution time of 30 seconds exceeded in c:\program files\easyphp1-8\www\gramofone\admin\saisie_ar.php on line 60
brièvement j'essaye d'uploader quatre fichiers de 1 mo chacun...
Si quelqu'un pouvait m'aider...

Merci d'avance

<?php require_once('../Connections/gramofone.php'); ?>
<?php
mysql_select_db($database_gramofone, $gramofone);
$query_artiste = "SELECT * FROM artiste";
$artiste = mysql_query($query_artiste, $gramofone) or die(mysql_error());
$row_artiste = mysql_fetch_assoc($artiste);
$totalRows_artiste = mysql_num_rows($artiste);

mysql_select_db($database_gramofone, $gramofone);
$query_audio = "SELECT * FROM mp3";
$audio = mysql_query($query_audio, $gramofone) or die(mysql_error());
$row_audio = mysql_fetch_assoc($audio);
$totalRows_audio = mysql_num_rows($audio);

mysql_select_db($database_gramofone, $gramofone);
$query_contact = "SELECT * FROM contact_gram";
$contact = mysql_query($query_contact, $gramofone) or die(mysql_error());
$row_contact = mysql_fetch_assoc($contact);
$totalRows_contact = mysql_num_rows($contact);

mysql_select_db($database_gramofone, $gramofone);
$query_images = "SELECT * FROM images";
$images = mysql_query($query_images, $gramofone) or die(mysql_error());
$row_images = mysql_fetch_assoc($images);
$totalRows_images = mysql_num_rows($images);

$conn_id = ftp_connect("ftp.adress"); // Connexion au ftp
ftp_login($conn_id,"user","pass"); // Identification
$RepDistant="www/news/"; // Répertoire distant
$UnLien="http://www.site"; // URL du site
$PoidsMax=1; // Exprimé en Mo, ici 5Mo
$PoidsMax=$PoidsMax*1000000; // On convertir en octets 5Mo -> 5 000 000 octets

//set_time_limit(120); 

//if (isset ($_POST["ok"])) {
// Récupération des infos du formulaire
$nom_artiste_tempo=$_POST['nom_artiste'];
$genre_artiste_tempo=$_POST['genre_artiste'];
$bio_tempo=$_POST['bio'];
$site_officiel_tempo=$_POST['site_officiel'];
$num_contact_prod_tempo=$_POST['num_contact_prod'];
// création du répertoire de stockage
$rep = substr($nom_artiste_tempo, 0, 6)."/";
$repertoire = "../artistes/".$rep;
//mkdir ($repertoire, 0777);			
if(isset($_FILES['dossier'])) {
	$dossier_tempo = $_FILES['dossier']['tmp_name'];
	$name = $RepDistant.$_FILES['dossier']['name'];
    if(ftp_put($conn_id,$name,$dossier_tempo,1)==1){
           echo "Le transfert de ".$name." a été effectué avec succés.";
           }else{
           //On affiche un message d'erreur si l'opération échoue
           echo "Le transfert de ".$name." a échoué !";
      }
}
if(isset($_FILES['fiche'])) { 
	$fiche_tempo = $_FILES['fiche']['name'];
	$name = $RepDistant.$_FILES['fiche']['name'];
    if(ftp_put($conn_id,$name,$dossier_tempo,1)==1){
           echo "Le transfert de ".$name." a été effectué avec succés.";
           }else{
           //On affiche un message d'erreur si l'opération échoue
           echo "Le transfert de ".$name." a échoué !";
      }
}
if(isset($_FILES['patchwork'])) { 
   	$patchwork_tempo = $_FILES['patchwork']['name'];
	$name = $RepDistant.$_FILES['patchwork']['name'];
    if(ftp_put($conn_id,$name,$dossier_tempo,1)==1){
           echo "Le transfert de ".$name." a été effectué avec succés.";
           }else{
           //On affiche un message d'erreur si l'opération échoue
           echo "Le transfert de ".$name." a échoué !";
      }
}
if(isset($_FILES['photo'])) { 
   	$photo_tempo = $_FILES['photo']['name'];
	$name = $RepDistant.$_FILES['photo']['name'];
    if(ftp_put($conn_id,$name,$dossier_tempo,1)==1){
           echo "Le transfert de ".$name." a été effectué avec succés.";
           }else{
           //On affiche un message d'erreur si l'opération échoue
           echo "Le transfert de ".$name." a échoué !";
      }
}
$insertSQL = "INSERT INTO artiste (nom_artiste, repertoire, genre_artiste, site_officiel, num_contact_prod, dossier, bio, patchwork, photo) VALUES ('$nom_artiste_tempo', '$rep', '$genre_artiste_tempo', '$site_officiel_tempo', '$num_contact_prod_tempo', '$dossier_tempo', '$bio_tempo', '$patchwork_tempo', '$photo_tempo')";
mysql_select_db($database_gramofone, $gramofone);
$Result1 = mysql_query($insertSQL, $gramofone) ;


?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="saisie_ar.php" method="post" enctype="multipart/form-data" name="insert" id="insert">
  <table align="center">
    <tr valign="baseline">
      <td nowrap align="right">Nom artiste:</td>
      <td><input name="nom_artiste" type="text" value="" size="32"> 
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Genre artiste:</td>
      <td><input type="text" name="genre_artiste" size="32"> 
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Site officiel : (http://) </td>
      <td><input type="text" name="site_officiel" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Contact gramofone :</td>
      <td>
        <select name="num_contact_prod">
          <?php
do {  
?>
          <option value="<?php echo $row_contact['num_contact'];?>"><?php echo $row_contact['prenom']?></option>
          <?php
} while ($row_contact = mysql_fetch_assoc($contact));
  $rows = mysql_num_rows($contact);
  if($rows > 0) {
      mysql_data_seek($contact, 0);
	  $row_contact = mysql_fetch_assoc($contact);
  }
?>
        </select>
        </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Dossier de presse :</td>
      <td><input name="dossier" type="file" id="dossier"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">&nbsp;</td>
      <td bgcolor="whitesmoke">Le nom du fichier doit &ecirc;tre "book.pdf"</td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Fiche technique :</td>
      <td><input name="fiche" type="file" id="fiche"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">&nbsp;</td>
      <td bgcolor="whitesmoke">Le nom du fichier doit &ecirc;tre "fiche_tech.pdf" </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr valign="baseline">
      <td align="right" valign="top" nowrap>Description :</td>
      <td valign="top"><textarea name="bio" cols="32"></textarea> 
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Photo du patchwork :</td>
      <td><input name="patchwork" type="file" id="patchwork"></td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">&nbsp;</td>
      <td bgcolor="whitesmoke">Le nom du fichier doit &ecirc;tre "patchwork.jpg"</td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Photo :</td>
      <td><input name="photo" type="file" id="photo"> 
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">&nbsp;</td>
      <td bgcolor="whitesmoke">Le nom du fichier doit &ecirc;tre "photo.jpg"</td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">&nbsp;</td>
      <td><input name="bt_insert" type="submit" id="bt_insert" value="ok"></td>
    </tr>
  </table>
</form>
<p>&nbsp;</p>
</body>
</html>
<?php
mysql_free_result($artiste);
mysql_free_result($audio);
mysql_free_result($contact);
mysql_free_result($images);
?>

Mammouth du PHP | 19672 Messages

07 juil. 2006, 16:42

Le message est clair, le délai de chargement est trop long et le timeout de PHP est ahusté à 30 secondes : trop court pour tout traiter et si tu es en mutualisé, tu ne pourras pas modifier cette directive. Donc il faut contourner le problème en traitant un seul upload à la fois.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 24 Messages

07 juil. 2006, 17:23

Merci de ta réponse...

Peux-tu être plus précis... "un chargement à la fois" ?

merci d'avance

Mammouth du PHP | 19672 Messages

07 juil. 2006, 18:03

Tu fais quatre chargements d'un coup : c'est trop pour le délai imparti par la configuration : trouve une manière de le faire un par un successivement : ça risque fort d'être suant pour l'utilisateur, mais ce sera la seule manière... à moins que tu sois sur serveur dédié : dans ce cas, essaye en ajustant le timeout à 2 minutes par exemple.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 3 Messages

26 juil. 2006, 19:30

Peut-être que tu peux t'en sortir avec :
set_time_limit(0);
A mettre en première ligne de ton script, et à condition que tu ne soies pas en safe_mode.

Mammouth du PHP | 19672 Messages

26 juil. 2006, 19:35

Dangereux comme solution et surtout, ça risque de bloquer l'affichage de la page sans un complément...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: