IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Problème max_execution_time script PHP


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Par défaut Problème max_execution_time script PHP
    Bonjour,
    Actuellement je travail sur un script d'extraction d'information de la base de données vers un fichier de type pdf. Ce script a pour bug de générer une centaine voir 200 pdf pendant son exécution sauf que je rencontre un problème qui me semble venir du max_execution_time. Puisque mon script ne se finit pas, et s'arrête au bout de 30 seconde, valeur par défaut dans le phpinfo.
    Je sais qu'il faut modifier le fichier php.ini, mais malheureusement j'ai pas accès au paramètre du serveur web. J'ai essayé de mettre un init_set... mais ça semble ne pas fonctionner. connaitriez-vous une autre méthode ?

    Voici mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    <?php
     
    require('phpToPDF.php');
    require('MysqlTable.php');
     
    class PDF extends PDF_MySQL_Table
    {
    function Header()
    {
        //Titre
        $this->SetFont('Arial','',18);
     
    	$this->Cell(0,6,'Information DA',0,1,'C');
     
        $this->Ln(10);
        //Imprime l'en-tête du tableau si nécessaire
        parent::Header();
    }
    }
     
    //Connexion à la base
    mysql_connect("%%%%", "%%%%","%%%%");
    mysql_select_db("%%%%");
     
     
    $req1 = mysql_query("SELECT distinct cost_center FROM `data_txt` where cost_center like 'F1S%' limit 400");
    $nb_result = mysql_num_rows($req1); 
    echo $nb_result;
    $compteur = 0;
    while ($section = mysql_fetch_array($req1)) 
    {
    set_time_limit();
    $compteur++;
    echo "$compteur</br>";
    echo $section['cost_center']."</br>";
    $pdf=new PDF();
    //création d'une nouvel page
    $pdf->AddPage();
     
    $pdf->Text(80,20,"Section ".$section['cost_center']."");
     
     
    //Insertion de l'image selon le type de pdf voulu
     
    	$pdf->Image("http://university.fr/reporting/outilSuiviDA/imgdata_graph.php?section=".$section['cost_center']."&request=$request",10,30,200,100,"PNG");
     
    // Positionnement du curseur pour insérer le tableau
    $pdf->SetX(10);
    $pdf->SetY(150);
    //Requete permettant de sortir les tableaux avec les résultat
     
    	$sqlrequest ="SELECT RIGHT(LEFT(`start_date`,7),2) AS Mois,
    ROUND(SUM(item_total_cost),2) AS 'TOTAL Facturé + Engagé',
    ROUND(SUM(case when  course_number_1 LIKE 'EC%' 
    AND course_number_2 NOT LIKE 'DIF%'  
    then item_total_cost else 0 end),2) AS 'ECM',
    ROUND(SUM(case when course_number_2 LIKE 'DIF%' 
    then item_total_cost else 0 end),2) as 'TOTAL DIF' 
    FROM data_txt WHERE company='FR-CIT FRANCE' 
    AND (order_status='Confirmed' OR order_status='Delivered') AND cost_center ='".$section['cost_center']."' 
    GROUP BY RIGHT(LEFT(`start_date`,7),2)";
     
    $sqlrequestTotal="SELECT '2011' as 'Année',ROUND(SUM(item_total_cost),2) AS 'TOTAL Facturé + Engagé (EUROS)',
    ROUND(SUM(case when  course_number_1 LIKE 'EC%' 
    AND course_number_2 NOT LIKE 'DIF%'  
    then item_total_cost else 0 end),2) AS 'ECM (EUROS)',
    ROUND(SUM(case when course_number_2 LIKE 'DIF%' 
    then item_total_cost else 0 end),2) as 'TOTAL DIF (EUROS)' 
    FROM data_txt WHERE company='FR-CIT FRANCE' 
    AND (order_status='Confirmed' OR order_status='Delivered') AND cost_center ='".$section['cost_center']."' ;";
     
    //Création des tableaux depuis les requêtes SQL
    $pdf->Table($sqlrequest);
     
    $pdf->Table($sqlrequestTotal);
    //Impression du document pdf dans la page
     
    $pdf->Output("./document/".$section['cost_center'],"F");
    }
    ?>
    Merci beaucoup.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    fait set_time_limit(0) au début de ton code

  3. #3
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Par défaut
    Merci pour ta réponse. ça fonctionne mieux. Mais le script s'arrête de façons aléatoires. Parfois il finit bien son travail. d'autres fois il fait même pas le 1/4.
    Je comprends vraiment pas.

  4. #4
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Par défaut
    après voir fait de nombreux test... le script finit des fois son travail, et des fois il s’arrête en plein milieu. C'est vraiment très aléatoire. Je ne comprend pas d'où peut venir le problème !

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par breizhlama Voir le message
    après voir fait de nombreux test... le script finit des fois son travail, et des fois il s’arrête en plein milieu. C'est vraiment très aléatoire. Je ne comprend pas d'où peut venir le problème !
    a mon avis ta classe PDF n'est pas très optimisé et prend beaucoup de ressource

  6. #6
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Par défaut
    J'utilise une classe que j'ai repris d'internet. Mais est-il possible de pallier à ce problème avec un memory_limit ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Problème de script PHP sur Dolibarr
    Par bmael dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 09/02/2011, 12h58
  2. [MySQL] Problème de script PHP/MySQl V.2
    Par lukyVJ dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 20/12/2010, 13h06
  3. [MySQL] Problème de script PHP/MySQl
    Par lukyVJ dans le forum PHP & Base de données
    Réponses: 45
    Dernier message: 10/12/2010, 19h02
  4. [MySQL] Problème de Script Php
    Par breizhlama dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/03/2010, 14h24
  5. problème de script php pour revenir à la page précédente
    Par mandyben dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/09/2006, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo