Auteur Sujet: Commit En Php/mysql ?  (Lu 1158 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Arnaud41

  • Débutant
  • *
  • Messages: 30
Commit En Php/mysql ?
« le: 01 avril 2004 à 23:09:45 »
Bonsoir,

Je voudrais mettre à jour une table de ma base MySQL distante (sur un serveur web) via un programme qui lit la table d'une base MySQL locale (pour le moment mon micro avec easyPHP puis plus tard un serveur apache interne).
Pour cela j'ai fait un truc de ce genre

    // CONNECTION A LA BASE LOCALE
      $db = mysql_connect($serveur,$login,$password) or die ("erreur de connexion serveur local");
      mysql_select_db($base,$db) or die ("erreur de connexion base locale");
 
    // REQUETE QUI LIT LA TABLE
      $req = mysql_query("SELECT * FROM table",$db);  
      if ($req)
          {
          
          // CONNECTION A LA BASE DISTANTE
          $db2 = mysql_connect($serveur2,$login2,$password2) or die ("erreur de connexion serveur distant");
         mysql_select_db($base2,$db2) or die ("erreur de connexion base distante");
        
         // VIDER LA TABLE DE DESTINATION
          $req2=mysql_query("DELETE FROM table",$db2);
          if ($req2)
       {
          print "vidage réussi !!!!";
        echo "<br>";
       }
     else
       {
   print " vidage echoué !!!";
       echo "<br>";
       }

        // INSERTION DANS LA TABLE DE DESTINATION
     while ($result = mysql_fetch_array($req))
       {
     mysql_query("INSERT INTO tables VALUES(......(mes valeurs) .......,$db2);
       }
     print "Copie effectuée";
        }
   else
    {
   print "Probleme pour lire la table";
                   }

   mysql_close();
   }
?>

Bon ca fontionne correctement pour les 150 premiers enregistrements (j'en ai 650 à copier) mais au bout d'un certain temps j'ai ce message d'erreur :
Fatal error: Maximum execution time of 30 seconds exceeded

Quelqu'un a-t-il une solution. Je me demandais si il ne fallait pas "commiter" ma requette de temps en temps mais en PHP/MySQL je vois pas trop comment..... :blink:

Alors si quelqu'un peut m'aider.......

Merci d'avance.
Arnaud

Hors ligne Un peu neuneu

  • Débutant
  • *
  • Messages: 100
Commit En Php/mysql ?
« Réponse #1 le: 01 avril 2004 à 23:21:09 »
A priori ton temps d'exécution de script est trop long. Etonnant tout de même qu'en 30s tu ne passes que 150 enr.

Il faut que tu trouves le moyen de recharger le script au bout de 150 insertions.

Tu pourrais stocker $req en tableau de session.
Pendant ta boucle d'insertion tu comptes 100 passages. Au 101 tu recharges ta page (header("Location:mapage.php?ori=recharge?pointeur=lig_tab_req)) avec un pointeur (ori) qui dit que tu recharges la page pendant l'opéraiton d'instertion et qu'il est donc inutile de repasser par $req. et un pointeur (pointeur) qui donne le numéro de ligne du tableau de session à recharger.

Enfin, c'est une idée comme ça. Peut-être que d'autres ont des choses plus simples ...

A+
Ce qui est utile au plus grand nombre l'emporte sur les désirs d'un seul !

CaniHome

Hors ligne Mystic`

  • Habitué
  • **
  • Messages: 135
    • http://bouh.net/
Commit En Php/mysql ?
« Réponse #2 le: 02 avril 2004 à 01:44:29 »
Citer
Enfin, c'est une idée comme ça. Peut-être que d'autres ont des choses plus simples ...
peut-etre
A Castle Can Have Only One Owner.

Un beau jour, l'amour dit à l'amitié : "Mais pourquoi existe-tu ?!" Et l'amitié de répondre : "Pour faire sécher les larmes que tu fais couler ..."

Hors ligne NaJ

  • Connaisseur
  • ***
  • Messages: 354
    • http://photo.pyrollo.com
Commit En Php/mysql ?
« Réponse #3 le: 02 avril 2004 à 10:05:59 »
Il n'y a pas de transactions en MySQL et donc pas de commit. Chaque insertion est donc automatiquement commitée.

Par contre, ton script tournant chez toi, tu as toutes les libertés pour enlever la limite de temps (ou du moins l'augmenter largement).
www.traque-aux-plaques.com

Collection de photos de plaques et regards de chaussée

http://photo.pyrollo.com

Photos de balades

Hors ligne Arnaud41

  • Débutant
  • *
  • Messages: 30
Commit En Php/mysql ?
« Réponse #4 le: 03 avril 2004 à 00:23:50 »
Citer
Citer
Enfin, c'est une idée comme ça. Peut-être que d'autres ont des choses plus simples ...
peut-etre
Super ! Ca fonctionne Nickel !

Merci aussi à Neuneu l'idée etait pas mal aussi je pense, mais plus complexe.

Merci Naj de me confirmer pour les commit en Mysql. C'est bien ce que je pensais mais un "collegue" m'avait mis le doute  :rolleyes:

MERCI !!!!!!!!!!