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

Langage PHP Discussion :

Batch user non opérationnel après 9000 boucles


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Batch user non opérationnel après 9000 boucles
    Bien le bonjour,

    Dans l'étude de savoir si les xml sont plus ou moins rapides dans l'élaboration d'un jeu utilisant flash et php, j'ai codé un "batch" qui cré en boucle des utilisateurs dans 2 tables : users et users_info.

    Voici l'algorythme (en gros) :

    1) Je truncate mes 2 tables
    2) J'efface tous mes xml concacrés aux users.
    3) XX : nombre de users que je veux créer.

    Pour i allant de 1 à XX
    -> Insertion d'un user
    -> Insertion de ces infos
    -> Création de l'xml account
    -> Création de l'xml info

    En fait, le souci réside dans le nombre de boucles : si je loop 1000 fois alors il m'affiche bien à la fin "Dernier incrément 1000". Par contre, si je commence à mettre 80000 alors ça capote... Je n'ai plus de message de fin, de plus, sur les 80000 demandés, seulement 8918 sont créés...

    J'aimerais savoir qu'est qui me bloque à ne pas pouvoir faire plus de 9000 insertions d'un coup ?
    => Sachant que je place ce code avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    set_time_limit(0);
    ini_set('memory_limit','80M');
    if(!ini_get('display_errors'))
        ini_set('display_errors', 1);
    error_reporting(E_ALL); //mais je n'ai aucun message d'erreur
    Bien à vous et cordialement,

    Steve.
    Dernière modification par Invité ; 19/05/2009 à 17h43.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Juste une info en plus : Avec wamp en local, il y va "tout schuss" et cré bien les 80000 users.

    Du coup, n'y aurait-il pas une configuration sur le serveur qui ne permettrait pas d'exécuter autant de requêtes d'un seul coup ?

    Merci d'avance pour vos suggestions.

    Au plaisir.

    Steve.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ahhh !

    Une solution de dernière minute qui sent bon !

    Plutôt que d'exécuter 80000 requêtes, on en fait qu'une !

    La solution : INSERT INTO user (liste_des_champs) VALUES

    On lance la boucle
    (liste_des_valeurs),
    On finit la boucle

    Et on oublie pas un substr pour enlever la dernière virgule .

    Au plaisir.

    Steve.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Une dernière info :

    Cette fameuse requête avec les 80000 jeux de valeurs après le VALUES ne passera pas. Une erreur concernant le 'max_allowed_packet' fera son apparition (Taille maximum d'une sql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SHOW VARIABLES LIKE "max_allowed_packet"
    ).

    2 solutions : Soit on est super admin de la base et on place "SET GLOBAL max_allowed_packet = 15500000;" => Requête de 15Mo.
    Sinon concaténer les VALUES jusqu'à ce que la requête soit assez pleine pour réitérer l'opération ensuite.

    Au plaisir.

    Steve.

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 20/03/2006, 16h26
  2. [VB.NET 2005]Composants non 'resetés' après un close
    Par NicolasJolet dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/03/2006, 11h23
  3. [SERVICE INTERACTIF] Form non utilisable apres logoff/logon
    Par Spart64 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 05/03/2006, 13h32
  4. Réponses: 5
    Dernier message: 13/02/2006, 13h59
  5. [PHP/CSS] liens vus->non vus apres une MAJ
    Par epoz dans le forum Langage
    Réponses: 2
    Dernier message: 13/12/2005, 15h08

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