Wiliwilliam | 0 #21 |
|
---|---|---|
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38209
Karma: 18938 |
ça n'impliquerait pas que je crée manuellement une class par champion ? (soit 133 champions)
pour le drop c'est une fois par heure. c'est pas la mort. en tout cas l'exécution du php est assez longue :roll: :lol: en gros ça tape dans les 30-40s à cause de la limitation du nombre de requête par tranche de 10s sur l'API riot.
Contribution le : 19/08/2016 19:47
|
|
Signaler |
-Flo- | 0 #22 |
|
---|---|---|
Je poste trop
Inscrit: 08/01/2005 13:41
Post(s): 15190
Karma: 12562 |
@Arsenick : Le vrai gain ce n'est pas la table temporaire, c'est le load data. La table temporaire n'est qu'une étape intermédiaire nécessaire dans ce cas précis avant l'insertion dans la table finale, pour gérer les incrémentations des lignes déjà existantes. Le but étant de minimiser le nombre de requêtes effectuées vers la base, grâce au load data il peut ainsi insérer une infinité de lignes en seulement deux requêtes.
Contribution le : 19/08/2016 19:53
|
|
Signaler |
Arsenick | 0 #23 |
|
---|---|---|
J'aime glander ici
Inscrit: 13/12/2006 00:12
Post(s): 6493
Karma: 1039 |
Citation :
Pourquoi? tu as besoin d'une instance champion? Dans tout les cas tes champions sont identique au point de vue de leur attribut (nom, vie, attaque, défense etc). Au pire tu pourrais avoir une instance par champion mais ça reste une seule classe Citation :
Seulement si ton cycle ne dépasse pas 60 min Citation :
Logique, un traitement local est toujours plus rapide qu'un traitement avec requête DB puisque tu as une communication entre les serveurs. Et encore en plus si tu le fait en désynchro puisque tu déco/reco de ta DB à chaque fois. @-Flo- J'avoue que je ne me suis jamais servi du load data. J'ai tendance à traiter côté apli puis push vers la DB avec une transac. A voir avec un trace si c'est vraiment plus opti niveau ressource.
Contribution le : 19/08/2016 20:32
|
|
Signaler |
Wiliwilliam | 0 #24 |
|
---|---|---|
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38209
Karma: 18938 |
@-Flo-
j'ai ENCORE un soucis sur la ligne INSERT INTO lolkoreus SELECT * FROM lolkoreus_wrk ON DUPLICATE KEY UPDATE donc si l'ID n'existe pas encore, il INSERT bêtement, pas de soucis. on passe à la ligne suivante de la table WRK si l'ID existe déjà on fait l'UPDATE mais 'faut additionner donc du coup on a par exemple pour le nombre de kill: championsKilled .= championsKilled ça marche pas += ça marche pas j'avoue ne pas connaitre la syntaxe. et surtout je ne sais pas comment je pourrais faire bêtement avec un A = A + B vu que les colonnes ont les même noms sur internet je trouve des trucs avec un WHERE ID = (current ID) mais je sais pas trop comment mettre ça en place dans ce cas là
Contribution le : 19/08/2016 20:35
|
|
Signaler |
Arsenick | 0 #25 |
|
---|---|---|
J'aime glander ici
Inscrit: 13/12/2006 00:12
Post(s): 6493
Karma: 1039 |
@Wiliwilliam_ si tu veux le faire côté DB, tu peux te servir d'une variable sql mais c'est pas vraiment ce qu'on conseil niveau BP.
Normalement tu prend tes donnée existante avant le traitement de tes infos, et ensuite tu mets à jours tes données avec un update après traitement des nouvelles données. Donc du coup t'as pas à te soucier de l'ancienne valeur car elle est de toutes façon additionnée lors de ton traitement.
Contribution le : 19/08/2016 20:41
|
|
Signaler |
Wiliwilliam | 0 #26 |
|
---|---|---|
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38209
Karma: 18938 |
ben j'ai le nom de la colonne de destination
championsKilled la valeur d'origine championsKilled la valeur à additionner championsKilled je sais vraiment pas quoi foutre derrière le update du coup j'ai testé bêtement championsKilled = championsKilled et j'ai le droit à "championsKilled in field list is ambiguous"
Contribution le : 19/08/2016 20:48
|
|
Signaler |
Arsenick | 1 #27 |
|
---|---|---|
J'aime glander ici
Inscrit: 13/12/2006 00:12
Post(s): 6493
Karma: 1039 |
@Wiliwilliam_ Logiquemnt dans ta requête tu défini un nom temporaire pour ta table ce qui évite d'avoir une redondance (lolchampion_wks AS lolC =/= lolchampion_wks AS lolC1) mais je te déconseil de faire du process dans la DB: une DB sert à stocker une information non calculable pas à la traiter.
En début de traitement tu fais un SELECT * de ta DB, tu crée à la volée un array d'objet avec toutes tes données (sert toi de l'ID comme index, c'est plus simple). Quand tu process ton api, tu recherches dans ton array de donnée si l'ID existe déjà, si oui tu additionnes la valeur existante à la nouvelle et ensuite tu l’inclus dans ton ficher. Quand tu as process tout, tu fais un INSERT / UPDATE et basta. un truc du genre (schématiser):
array_key_exists pour savoir si l'ID existe déjà.
Contribution le : 19/08/2016 21:24
|
|
Signaler |
-Flo- | 1 #28 |
|
---|---|---|
Je poste trop
Inscrit: 08/01/2005 13:41
Post(s): 15190
Karma: 12562 |
@Wiliwilliam_ : Pour lever l'ambiguité qu'il te donne en erreur, tu as juste à préfixer la colonne que tu vises par le nom de la table à laquelle elle appartient. Par exemple lolkoreus.championsKilled vs lolkoreus_tmp.championsKilled .
Donc championsKilled = lolkoreus.championsKilled + lolkoreus_tmp.championsKilled Tout simplement...
Contribution le : 19/08/2016 22:06
|
|
Signaler |
Wiliwilliam | 0 #29 |
|
---|---|---|
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38209
Karma: 18938 |
@-Flo- oui, c'est ce que @Skity m'a expliqué sur Teamspeak.
Du coup on arrive à ça, bon ap':-D:
Et ça, c'est la requête juste pour les CHAMPIONS, parce qu'il y a aussi une requête pour chaque joueur qui vaut son pesant de cacahuète (cf pastbin) Bon ben encore une fois, merci à tous, vous êtes vraiment des champions, parce que comprendre ce que j'explique c'est pas toujours facile #galérien-de-l'explication :lol: et réciproquement, je suis un peu lent à comprendre ce qu'on m'explique
Contribution le : 19/08/2016 22:14
|
|
Signaler |
Arsenick | 0 #30 |
|
---|---|---|
J'aime glander ici
Inscrit: 13/12/2006 00:12
Post(s): 6493
Karma: 1039 |
Citation :
Ha oui ok, je ne sais pas pourquoi, je pensai qu'il faisait un self join d'ou l'utilisation d'un alias ^^. Maintenant de vous à moi, je trouve ça sale comme manière de procéder :lol: .
Contribution le : 20/08/2016 00:57
|
|
Signaler |
Wiliwilliam | 0 #31 |
|
---|---|---|
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38209
Karma: 18938 |
@-Flo-
@Skity @Arsenick dites, j'ai un bug mental ... PHP:
ça me ECHO ça
et quand je C/C ça manuellement dans la BDD ça marche Par contre quand je passe par un mysqli_query($connect,$query1) il me dit merde sans m'afficher d'erreur ........................... lapin compris ce qu'il se passe vu que le C/C de mon ECHO fonctionne quand je fais manuellement la requête Les \ pour échapper les ' ne marchent pas du php vers le SQL? edit: je suis allé potasser la "concaténation pour les nuls" et j'avoue que ... même en doublant le \ devant le \n ça n'y change rien.
Contribution le : 20/08/2016 12:40
|
|
Signaler |
Skity | 0 #32 |
|
---|---|---|
Je masterise !
Inscrit: 29/12/2013 23:48
Post(s): 2024
Karma: 521 |
Citation :
Dans ton ECHO, il y a un antisplash de trop après compteur.csv. Un echo de mysqli_connect_error() donne quoi ?
Contribution le : 20/08/2016 13:41
|
|
Signaler |
Wiliwilliam | 0 #33 |
|
---|---|---|
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38209
Karma: 18938 |
@Skity rien du tout, c'est bien ce qui m'angoisse...
pour le \ de trop je crois que c'est moi qui l'ai rajouté en éditant ce topic actuellement j'ai ça: ECHO->
PHP->
et rien a changé, ça marche toujours quand je C/C le ECHO dans la BDD et ça marche pas à partir de mysqli_query mysqli_query($connect,$query1) or die(mysqli_connect_error($connect));
Contribution le : 20/08/2016 13:55
|
|
Signaler |
Wiliwilliam | 0 #34 |
|
---|---|---|
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38209
Karma: 18938 |
ok donc j'ai discuté avec @Dakwamine et du coup
la petite astuce c'était: $connect = mysqli_init(); mysqli_options($connect, MYSQLI_OPT_LOCAL_INFILE, true); + un real_connect alors quand on sait pas ... ben effectivement c'est pas évident
Contribution le : 20/08/2016 15:46
|
|
_________________
>> Récompenses si tu passes en article << |
||
Signaler |