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

AJAX Discussion :

[AJAX] Gestion mémoire dans un traitement


Sujet :

AJAX

  1. #1
    Membre averti
    Avatar de Psycadi
    Homme Profil pro
    Chef de projet - Expert en message box
    Inscrit en
    Juillet 2003
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet - Expert en message box

    Informations forums :
    Inscription : Juillet 2003
    Messages : 147
    Points : 364
    Points
    364
    Par défaut [AJAX] Gestion mémoire dans un traitement
    Bonjour à tous,

    Voilà, j'ai un petit problème.
    J'ai 33000 enregistrements dans une table voiture que je dois migrer dans une table vehicule. Bien entendu, j'ai un traitement à réaliser pour chaque ligne de ma table voiture pour qu'elle rentre dans la table vehicule.

    Pour faire cela, j'ai une page php avec un script ajax qui appelle un autre script php (je fais de l'ajax quoi).

    Au début, j'avais mis le traitement de toutes les lignes dans le script de migration en php mais il y a tellement de ligne que je dépasse le temps d'exécution de 60 sec (je ne peux pas le changer car en prod, je ne peux pas utiliser set_time_limit())

    Donc, j'ai décidé de mettre en place une fonction Ajax qui me permettrait de lancer mon script de migration à chaque ligne.

    Je lance mon traitement avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <a href="javascript:DoMigration(0);">
      <img src="run.gif"/>
    </a>
    voici ma fonction javascript :
    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
    function DoMigration(currentId)
    {
     var xhr_object = GetXHR();
     var no_cache = Math.random();
     
     if (encodeURIComponent(currentId) != "")
     {
      var sendData = "idVoiture=" + encodeURIComponent(currentId) + "&nocache=" +no_cache;
     
      xhr_object.open('post', 'migrVoiture.php',true);
      xhr_object.onreadystatechange = function()
      {
       if(xhr_object.readyState == 4)
       {	
        if(xhr_object.responseText != 'FIN')
        {
         document.getElementById('divInfo').innerHTML = xhr_object.responseText;
         DoMigration(xhr_object.responseText);
        }
       }
      }
     
      xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      xhr_object.send(sendData);
     }
    }
    Et voici me code de mon script de migration (enfin une toute petite partie)
    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
    <?php
    require_once('../authcheck.php');
    require_once('../Connexion/lbconnex.php');
     
    if ($_SESSION['profil']== "1")
    {
     $projet = mysql_connect($hostname_projet, $username_projet, $password_projet) or trigger_error(mysql_error(),E_USER_ERROR);
     mysql_select_db($database_projet, $projet);
     
     $queryVoiture = "SELECT * FROM `voiture` WHERE `id` > ".$_POST['idVoiture']." ORDER BY fr_id LIMIT 1";
     $rsQueryVoiture = mysql_query($queryVoiture, $projet) or die(mysql_error());
     
     if (mysql_num_rows($rsQueryVoiture) > 0)
     {
      while($rowVoiture = mysql_fetch_array($rsQueryVoiture))
      {
       $queryGetNewId = "SELECT new_id FROM migIdVoitureVehicule WHERE code_ve = '".$rowOldFiche['code_voiture']."'";
       $rsquerySelectNewId =  mysql_query($queryGetNewId , $projet) or die(mysql_error());
       $rowId = mysql_fetch_array($rsquerySelectNewId, MYSQL_NUM);
       $queryInsert = "INSERT INTO vehicule (id_code) VALUES('".$rowId[0]."')";
       mysql_query($queryInsert, $projet) or die(mysql_error());
       echo $rowVoiture ['id'];
      }
     }
     else
      echo "FIN";
     
     mysql_close($projet);
    }
    else
     echo 'Vous n\'avez pas le droit d\'utiliser cette fonction.';
    ?>
    Et donc, là, je fais une petite partie de mon traitement pour l'id en cours et ensuite, je retourne cette id à la page pour que la fonction AJAX lance la suivante.

    Hélas, lorsque je lance ce bout de code, et bien IE6 prend 400Mo de mémoire et je peux plus rien faire d'autre.

    Alors si vous avez des idées pour m'aider, je suis preneur.

    Merci de votre aide.

  2. #2
    Membre averti
    Avatar de Psycadi
    Homme Profil pro
    Chef de projet - Expert en message box
    Inscrit en
    Juillet 2003
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet - Expert en message box

    Informations forums :
    Inscription : Juillet 2003
    Messages : 147
    Points : 364
    Points
    364
    Par défaut
    Bon, j'ai ajouté un paramètre à ma fonction pour lui donner l'objet xhr_object et ainsi ne plus le recréer à chaque fois et ça a l'air de fonctionner.

    Mais si vous avez d'autres idées pour améliorer les choses, je suis preneur.

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

Discussions similaires

  1. [AJAX] Redirection dans un traitement Ajax
    Par maxfbt dans le forum jQuery
    Réponses: 2
    Dernier message: 13/09/2013, 14h52
  2. Gestion mémoire dans une application
    Par m-mas dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 07/06/2012, 12h24
  3. Gestion de mémoire dans Java ?
    Par nolofinwe dans le forum Langage
    Réponses: 13
    Dernier message: 10/01/2008, 13h37
  4. Perdu dans le traitement de string
    Par MatMeuh dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/09/2004, 11h34
  5. Gestion mémoire des Meshes (LPD3DXMESH)
    Par [Hideki] dans le forum DirectX
    Réponses: 1
    Dernier message: 08/07/2003, 20h34

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