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 :

pb de temps maximum d'execution


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de johnkro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 276
    Par défaut pb de temps maximum d'execution
    bjr tlm,

    g un pb de temps maximum d'execution sur un script php. Je me suis renseigné sur le web, j'ai cru comprendre qu'il y avait 2 façons de l'augmenter:
    set('max_time_execution',int) sur le serveur
    et set_limit_time dans le script php.
    Vu que je ne suis pas administrateur du serveur, je voudrais des renseignements sur la seconde solution svp.

    Mon problème est qu'il y a beaucoup de donnéées, j'arrive a les lire mais je n'arrive pas a les copier dans ma base en locale car il y a trop de données et mon traitement dépasse les 30 secondes.

    Voici ma boucle pour lire les données :
    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
     while(ocifetch($resultat)) {
        $DDATE=ociresult($resultat,1);
        $SYSCAA=ociresult($resultat,2);
        $GPS=ociresult($resultat,3);
        $SGTQS=ociresult($resultat,4);
        $NUMES=ociresult($resultat,5);
        $NBR=ociresult($resultat,6);
        echo $DDATE;echo ' ';
        echo $SYSCAA;echo ' ';
        echo $GPS;echo ' ';
        echo $SGTQS;echo ' ';
        echo $NUMES;echo ' ';
        echo $NBR;echo ' ';
        echo "<br>";
    }
    Voici ma boule pour copier mes donnees:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     while (ocifetch($lala)){
        $date=ociresult($lala,1);
        $syscaa=ociresult($lala,2);
        $gps=ociresult($lala,3);
        $sgtqs=ociresult($lala,4);
        $numes=ociresult($lala,5);
        $nbr=ociresult($lala,6);
        $sql="insert INTO historique (DDATE,SYSCAA,GPS,SGTQS,NUMES,NBR) VALUES ('$date','$syscaa','$gps','$sgtqs','$numes','$nbr')";
        $res = mysql_query($sql) or die ("requete incorrecte au niveau des statistiques du jour");
    }
    Merci d'avance

  2. #2
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Par défaut
    tu prends des données oracle que tu copies dans une base SQL ? sympa...

    sinon, si c'est vraiment ça le problème, c'est set_time_limit() la fonction.

    Tu mets juste le nombre de secondes que tu veux en argument... Si c'est pas toi qui administre le serveur, il est fort possible que le responsable bloque cette fonction, auquel cas il faudra le contacter...

    Pour connaître ta limite de temps actuelle, tu affiches le retour de ini_get('max_execution_time')

  3. #3
    Membre éclairé Avatar de johnkro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 276
    Par défaut
    en ajoutant set_time_limit(60); avnt ma boucle ou dedans, ca ne fonctionne, il me dit que la fonction n'est pas reconnu...
    c'est sympa d'oracle a sql ms c chiant lol

  4. #4
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Par défaut
    tu peux mettre le message d'erreur svp ?

  5. #5
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    si tu n'est pas administrateur, y a de forte chances pour la fonction set_time_limit() ait été désactivée... donc normal qu'il ne la reconnaisse pas, donc ce n'est pas une bonne solution.

    Essaye de revoir ton algorithme pour le découper en "morceaux" executables l'un apres l'autre par exemple, a l'aide de header("Location: ..."); ou de liens cliquables... ou encore ameliore ton code pour augmenter ses performances et le terminer dans les 30 sacro saintes secondes ;o)

  6. #6
    Membre éclairé Avatar de johnkro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 276
    Par défaut
    Je ne vois pas comment je pourrais améliorer mon code pour le rendre plus rapide, car je dois forcément faire un INSERT dans ma base localMySQL de mes données venant de Oracle... arf arf

  7. #7
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Par défaut
    tu fermes bien ta connexion oracle avant de lancer celle de mysql ? (je sais pas si ça a un rapport mais peut être)

  8. #8
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    ce n'est certainement pas UN insert qui prend 30 secondes. et meme si c'est le cas, tu peux essayer d'ajouter DELAYED, ou encore ajouter/enlever des clés pour optimiser la requete.

    Si tu as plusieurs INSERT, c'est donc que ton traitement est découpable en portion pouvant etre executées en plusieurs fois (avec un lien "Cliquez pour continuer") ce qui est envisageable si c'est pour une interface administrateur uniquement, balance pas ce genre de script a l'utilisateur lambda ;o)

Discussions similaires

  1. [Système] Erreur "maximum time execution"
    Par jason69 dans le forum Langage
    Réponses: 5
    Dernier message: 04/04/2007, 08h15
  2. [Directives] Augmenter le temps maximum d'exécution
    Par wided_instm dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 13/11/2006, 10h31
  3. Réponses: 16
    Dernier message: 11/07/2006, 11h30
  4. Temps maximum pour le timeout ?
    Par Etanne dans le forum ASP
    Réponses: 4
    Dernier message: 04/05/2006, 11h15
  5. [MySQL] Afficher le temps mis pour executer une requête SQL
    Par micatmidog dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/09/2005, 11h23

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