[resolu] Gros bug ?? oscss en forte charge

Messagepar oscim » Lun 26 Oct 2009, 00:55

Je me trouve confronté a un nouveau bug ? me semble t'il.

Dans la partie public , on utilise la function tep_db_insert_id recupere le dernier id de la db.

Mais dans le cas d'une boutique a forte affluence, il s'avere que celle ci ne renvoi plus nécessairement les bonne info. d'autre execution perturbe semble t'il les enregistrement.
Dernière édition par oscim le Sam 31 Oct 2009, 14:05, édité 1 fois.
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar oscim » Mar 27 Oct 2009, 20:14

Pour faire suite a cette remonté, il apparait que la boutique sous charge importante, entre 20 et 50 visiteur permanent, ne ce comporte plus comme il devrait....

Il faut necessairement corriger le code afin de limiter les bug conséquent qui vont ce produire.

Dans la partie public au moins, afin que vous n'ayaer pas de soucis, il faut remplacer tout les appel vers la function tep_db_insert_id().

Cette fonction renvoi le derniere id enregistré ds la db, cependant, des que la shop est bcp visité, d'autre enresgitrement viennent pertuber la recup de cet id.

Or la fucntion est utiliser dans la creation de compte, l'enregsitrement des commande et du held_order...

Ces modification bloque tous les enregsitrements secondaire à une op.

Je m'exlique.

Creatiopn d'un compte client.
1er enregsitrement db vers osc_customer + recup id
utilisation de l'id pour
2eme enreg ds customer_info
3 enreg dans adress book + recup id

re update customer pour il placer l'id de l'adresse par defaut.

Dans ce cas, seul le premier des enregsitrement fonctionnera, tous les autre seront placer avec un id null , donc tous cassé .

Vous ne rencontrez pas ces bug lors de test, compte tenu du faible mouvement des db dans ce contexte.

Les correction sont a apporter aussi du coté de l'admin, qui utilise aussi cette fonction
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar cynic- » Mar 27 Oct 2009, 20:53

Et cette fonction (donc ce bug) était déjà présent dans oscommerce à l'époque ?
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar oscim » Mer 28 Oct 2009, 01:02

Il me semble avoir trouvé des reliquats dans oscommerce, toutefois je n'y met pas ma tête à coupé.

Cela dis, sans cette modif la solution devient inutilisable.

et apres recherche sur cette fonction de mysql, il semble être mis en avnt que ces justement la limite d'utilisation de cette fonction.

Cela dis, je ne suis pas un expert dans le sql. Mais je constate que apres modif des ces appels, le shop retrouve son fonctionnement normal.

Pour finir, j'ai lu plusieurs post, ou justement il etait mis en avant de plutot utilisé le select , celui ci etant plus fiable.

Disons simplement que pour utiliser cette fonctionnalité, il est necessaire d'utiliser un ordanceur d'appel vers mysql, ou de convertir les appel vers musqli peut être.
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar oscim » Mer 28 Oct 2009, 01:17

Pour ex,

je n'ai pas le temps de remonté toute les corrections, je dois encore couple oscss avec un forum et une ferme de blog....

sur le creat_account
Code: Tout sélectionner
      $customer_id = tep_db_insert_id();

Par
Code: Tout sélectionner
       $cs_s=tep_db_query("select customers_id from " . TABLE_CUSTOMERS . "  where customers_email_address='".$email_address."' ");
       $cs=tep_db_fetch_array($cs_s);
      $customer_id=$cs['customers_id'];

Sans cette modif, le retour de la fonction tep_db_insert_id me renvoi une fois de temps en temsp la valeur correct.

Certe la solution du select fait un appel supplémentaire, mais dans tout les cas, c'est pleinement fonctionnel.
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar steph68 » Mar 23 Mar 2010, 11:48

salut,

as tu essayé en donnant l'identifiant de connexion de la base à la fonction mysql_insert_id() ? ($db_link)
je pense que ton problème vient de là.
normalement cette fonction retourne le dernier id de la connexion courante. une autre instance en parallèle à un autre identifiant de connexion ...

@+
steph68
Membre actif
 
Messages: 17
Inscription: Sam 01 Aoû 2009, 12:25

Messagepar oscim » Mar 23 Mar 2010, 19:37

Salut,

En fait, oui, en plus il me semble qu'il est passé en global.

Pourtant , étant pas specialiste sql, je me suis renseigné de leur coté, est il me laissé entendre le contraire.

Mais bon. Pour reglé ca, j'ai fait les modif cité au dessus. Ca fait une requete de plus ... :(

cependant comme j'ai beaucoup optimisé de l'autre coté:)
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar steph68 » Mar 23 Mar 2010, 22:16

En fait, oui, en plus il me semble qu'il est passé en global

Ce n'est pas le cas sur la version 1.2.1

Code: Tout sélectionner
  function tep_db_insert_id() {
    return mysql_insert_id();
  }

il faut rapporter l'identifiant dans l'appel à mysql_insert_id()

sinon PHP va utiliser la dernière connexion ouverte avec les mêmes paramètres du serveur mysql (la dernière connexion du thread en cours, ou la dernière parmis tout les threads ?)

Peut être une explication au problème ...

c'est vrai que sur le net c'est assez confus ; certains disent avoir des problèmes avec cette fonction, d'autres aucun problème ...

autre explication possible : utilisation de pconnect()

@+
Dernière édition par steph68 le Mar 23 Mar 2010, 22:17, édité 1 fois.
steph68
Membre actif
 
Messages: 17
Inscription: Sam 01 Aoû 2009, 12:25

Messagepar oscim » Mer 24 Mar 2010, 00:21

C'est tout a fait vrai pour la 1.2.1

Cependant, j'avais suivi un post sur oscommerce qui justement montrait ce pbs et souligné le fait qu'il fallait faire suivre le ($db_link).

Toutefois, je ne suis pas revenu sur ce iste qui me posait souci, puique le select remplacer le pbs.

Depuis sur la version oscss-2, j'ai ajouté une class qui prend en charge le traitement sql.
Les fonctions sont toujours 'dactuialité, puisque je n'ai pas remplacé tous les appels.

MAis le pbs que tu souligne ne dervait plus avoir lieux, compte tenu que le ($db_link) est contenu dans l'objet.

Je referai quelques essai , cependant, le pbs, est que ca n'est apparu que sous forte charge. et la je ne me voix pas faire ce type de modif sur un version en prod, et en dev. pas de forte charge.

Mais si tu est sur de toi, ds la demarche d'optimisation, je regrarderai de pres :)
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar steph68 » Mer 24 Mar 2010, 11:16

Mais si tu est sur de toi, ds la demarche d'optimisation, je regrarderai de pres

C'était simplement des pistes pour essayer de résoudre ton probleme.

Faire un SELECT à la place, c'est la solution la plus fiable, mais aussi celle qui consomme le plus de ressources et de temps. (surtout si les champs de recherche ne sont pas indexés)

@+
steph68
Membre actif
 
Messages: 17
Inscription: Sam 01 Aoû 2009, 12:25


Retourner vers Developpement

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron