Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3464 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  467  468  469  ..  486  487  488  489  490  491
Auteur Sujet :

les développeurs de forums, les 3/4 des forums sont down /o\

n°1725202
multani
Dépressionnisé
Posté le 27-04-2008 à 18:45:15  profilanswer
 

Reprise du message précédent :

Dj YeLL a écrit :

Ça vient de quoi la "perte" sur une table vide ?
 
Sur table avec du contenu, je crois que ce sont les champs qui ne sont pas rempli, entre autres, non ? Genre un champ "CHAR 30" avec 20 octets de datas dedans, ça faut 10 octets de perte, c'est bien ça ?
 
Mais sur une table vide ...


C'est dû aux suppressions des données de la table, ça laisse des "trous" qui sont récupérés soit quand tu réinserts des données dans la table, soit que tu "vacuum" ta table (ça s'appelle "optimize" dans Mysql je crois).

mood
Publicité
Posté le 27-04-2008 à 18:45:15  profilanswer
 

n°1725207
Dj YeLL
$question = $to_be || !$to_be;
Posté le 27-04-2008 à 19:01:29  profilanswer
 

Ouaip mais lorsque la table est vide ... je vois pas d'où vient le "trou" (et oui, c'est bien optimize sous MySQL)


---------------
Gamertag: CoteBlack YeLL
n°1725210
drasche
Posté le 27-04-2008 à 19:06:31  profilanswer
 

Lorsque tu fais un DELETE, l'enregistrement est marqué comme effacé mais n'est pas physiquement effacé. OPTIMIZE se contente de "compresser" la table en la ramenant à une taille équivalente à taille_record*count(*) (si je puis dire ainsi).


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1725213
kao98
...
Posté le 27-04-2008 à 19:20:58  profilanswer
 

Dj YeLL a écrit :

Ouaip mais lorsque la table est vide ... je vois pas d'où vient le "trou" (et oui, c'est bien optimize sous MySQL)


La table contenait des enregistrement qui ont été supprimé, c'est bien ça ?


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1725214
Dj YeLL
$question = $to_be || !$to_be;
Posté le 27-04-2008 à 19:29:52  profilanswer
 

Ouaip

 

J'avais pas vu le message précédent :jap:


Message édité par Dj YeLL le 27-04-2008 à 19:30:20

---------------
Gamertag: CoteBlack YeLL
n°1725218
multani
Dépressionnisé
Posté le 27-04-2008 à 19:35:09  profilanswer
 

drasche a écrit :

"compresser" la table en la ramenant à une taille équivalente à taille_record*count(*) (si je puis dire ainsi).


défragmenter [:maitre drasche] :D

n°1725225
Dj YeLL
$question = $to_be || !$to_be;
Posté le 27-04-2008 à 20:00:31  profilanswer
 

Dj YeLL a écrit :

0.28 secondes pour afficher 200 forums, avec le calcul du nombre de topics et post pour chacun d'eux, ainsi que le titre et l'id du dernier post, ainsi que le titre et l'id du dernier posteur.


 
Yé optimisé ma requête => 0.06 secondes ^^


---------------
Gamertag: CoteBlack YeLL
n°1725245
fabien
Vive la super 5 !
Posté le 27-04-2008 à 20:44:25  profilanswer
 

dis moi Yell, t'es au chomage? car depuis quelques jours j'ai l'impression que tu passe toutes tes journées à coder ton forum :o


---------------
Découvre le HFRcoin ✈ - smilies
n°1725246
Dj YeLL
$question = $to_be || !$to_be;
Posté le 27-04-2008 à 20:45:46  profilanswer
 

Oui


---------------
Gamertag: CoteBlack YeLL
n°1725247
rosco
Posté le 27-04-2008 à 20:48:59  profilanswer
 

Et ton COUNT() tu l'intègres comment, car y en a autant que de forums. C'est ça que t'as optimisé ?

Message cité 1 fois
Message édité par rosco le 27-04-2008 à 20:49:12
mood
Publicité
Posté le 27-04-2008 à 20:48:59  profilanswer
 

n°1725271
totoffe38
Posté le 27-04-2008 à 21:38:05  profilanswer
 

Avec l'index qui va bien sur une table InnoDB de 100k, je mets 0.03s avec un query tout simple au lieu de 5-6s:

Citation :

SELECT * FROM articles WHERE articles.user_id = 3000


 
J'ai passé un peu de temps à réécrire mon système de création de données pour obtenir les 1M avec des jointures qui marchent parce qu'avec un rand(10000) sur mon user_id, certains commentaires n'avaient jamais d'utilisateurs associés.
 
Par contre les données pour un même utilisateur vont se retrouver "à côté" dans la table, alors que dans la réalité elles seront éparpillées un peu partout, ça gêne pour mon benchmark?
 
Sinon vous faites comment avec MyISAM quand un utilisateur édite un post? Le fait de bloquer toute la table pour un UPDATE c'est pas trop mauvais? Ou les utilisateurs ne prennent jamais le temps d'éditer leurs posts pour corriger les fotes d'hortaugraffes?

n°1725284
Dj YeLL
$question = $to_be || !$to_be;
Posté le 27-04-2008 à 22:34:38  profilanswer
 

rosco a écrit :

Et ton COUNT() tu l'intègres comment, car y en a autant que de forums. C'est ça que t'as optimisé ?


 
J'utilise des vues.
 
Bon par contre j'en chie pour retourner le dernier post de chaque forum :/
 
Le seul truc fonctionnel c'est ça :
 

Code :
  1. SELECT
  2.    id AS last_post_id,
  3.    username AS last_poster_name,
  4.    user_id AS last_poster_id,
  5.    created_at
  6. FROM
  7.    (SELECT * FROM post ORDER BY id DESC) AS post
  8. GROUP BY
  9.    forum_id;


 
Mais alors bonjour le temps de génération :/ Une demi-seconde :/
 
Une meilleur idée ?


---------------
Gamertag: CoteBlack YeLL
n°1725285
Dj YeLL
$question = $to_be || !$to_be;
Posté le 27-04-2008 à 22:43:26  profilanswer
 

Ce que je ne comprends pas, c'est que si je créé une vue :
 

Code :
  1. CREATE VIEW maVue AS SELECT * FROM post ORDER BY id DESC;


 
Puis que je fais :
 

Code :
  1. SELECT
  2.    id AS last_post_id,
  3.    username AS last_poster_name,
  4.    user_id AS last_poster_id,
  5.    created_at
  6. FROM
  7.    maVue
  8. GROUP BY
  9.    forum_id;


 
Ça prend 0.05 secondes, mais le résultat n'est pas le même (et est donc incorrect)


---------------
Gamertag: CoteBlack YeLL
n°1725293
Dj YeLL
$question = $to_be || !$to_be;
Posté le 27-04-2008 à 23:01:48  profilanswer
 

Bon bah en fait je pense que le dernier post/dernier auteur je vais continuer à les stocker dans les bases parentes, ça bouffe trop de ressource.


---------------
Gamertag: CoteBlack YeLL
n°1725294
joce
Architecte / Développeur principal
"BugHunter"
Posté le 27-04-2008 à 23:04:36  profilanswer
 

c'est quoi l'interet de l'order by dans la vue ?
Et puis c'est pas une view que tu dois créer a priori, c'est une temp table.
Pour le group by, il ne te garantie absolument pas quels enregistrements il va te renvoyer quand il va chopper une des lignes pour un forum_id donné, donc l'approche n'est pas bonne.


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°1725295
joce
Architecte / Développeur principal
"BugHunter"
Posté le 27-04-2008 à 23:06:48  profilanswer
 

drasche a écrit :

Lorsque tu fais un DELETE, l'enregistrement est marqué comme effacé mais n'est pas physiquement effacé. OPTIMIZE se contente de "compresser" la table en la ramenant à une taille équivalente à taille_record*count(*) (si je puis dire ainsi).


D'où l'interet d'utiliser un TRUNCATE quand on veut dégager tous les enregistrements d'une table.


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°1725296
Dj YeLL
$question = $to_be || !$to_be;
Posté le 27-04-2008 à 23:07:45  profilanswer
 

Aucun intérêt, c'était juste un test :o J'ai remplacé la sous-requête  par une view fabriquée avec cette même sous-requête pour voir le résultat, 'fin bref, osef :D

 

Mais sinon, comment faire donc ? [:sisicaivrai]

 

Hormis le fait de restocker le dernier post dans les tables forum et topic, je vois pas.

Message cité 1 fois
Message édité par Dj YeLL le 27-04-2008 à 23:08:13

---------------
Gamertag: CoteBlack YeLL
n°1725297
Dj YeLL
$question = $to_be || !$to_be;
Posté le 27-04-2008 à 23:08:55  profilanswer
 

joce a écrit :


D'où l'interet d'utiliser un TRUNCATE quand on veut dégager tous les enregistrements d'une table.


 
Sauf que le TRUNCATE n'exécute par les triggers :o


---------------
Gamertag: CoteBlack YeLL
n°1725300
joce
Architecte / Développeur principal
"BugHunter"
Posté le 27-04-2008 à 23:29:09  profilanswer
 

Dj YeLL a écrit :

Aucun intérêt, c'était juste un test :o J'ai remplacé la sous-requête  par une view fabriquée avec cette même sous-requête pour voir le résultat, 'fin bref, osef :D
 
Mais sinon, comment faire donc ? [:sisicaivrai]
 
Hormis le fait de restocker le dernier post dans les tables forum et topic, je vois pas.


Ba, t'as bien une table qui stocke la liste des forums ?
Donc tu peux toujours tenter une jointure entre cette table et la table post, avec un ORDER BY id DESC LIMIT 1
 
Après je garantis pas que ca soit forcement optimisé :D


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°1725301
Dj YeLL
$question = $to_be || !$to_be;
Posté le 27-04-2008 à 23:42:34  profilanswer
 

Euh ... comment je peux sortir la liste des forums avec un LIMIT 1 ?


---------------
Gamertag: CoteBlack YeLL
n°1725303
joce
Architecte / Développeur principal
"BugHunter"
Posté le 27-04-2008 à 23:51:33  profilanswer
 

Dj YeLL a écrit :

Euh ... comment je peux sortir la liste des forums avec un LIMIT 1 ?


C'est un piège pour voir si tu suivais :o
 
non par contre tu peux faire un MAX(id) GROUP BY forum_id et derrière une autojointure pour récup l'username /user_id correspondant au MAX(id)
 
Ou alors :
 
SELECT username,user_id,forum_id as f_id FROM forum_list LEFT JOIN post USING (forum_id) WHERE id=(SELECT MAX(id) FROM post WHERE forum_id=f_id)
 
Tient d'ailleurs par curiosité, me demande si ca marcherait : (c'est un peu tordu, vu que t'as une DEPENDANT SUBQUERY qui dépend elle même du GROUP BY forum_id :D
 
SELECT username,user_id,forum_id as f_id FROM post WHERE id=(SELECT MAX(id) FROM post WHERE forum_id=f_id) GROUP BY f_id


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°1725317
ratibus
Posté le 28-04-2008 à 07:59:19  profilanswer
 

C'est pas plus simple d'updater un champ last_post_id à chaque post et de faire la jointure sur ce champ ?


---------------
Mon blog
n°1725323
joce
Architecte / Développeur principal
"BugHunter"
Posté le 28-04-2008 à 08:35:53  profilanswer
 

ratibus a écrit :

C'est pas plus simple d'updater un champ last_post_id à chaque post et de faire la jointure sur ce champ ?


si, je pense, mais pour la requète c'est plus pour le sport :D


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°1725346
ratibus
Posté le 28-04-2008 à 09:15:04  profilanswer
 

joce a écrit :


si, je pense, mais pour la requète c'est plus pour le sport :D


Je comprends :D


---------------
Mon blog
n°1725413
Dj YeLL
$question = $to_be || !$to_be;
Posté le 28-04-2008 à 10:15:36  profilanswer
 

joce a écrit :


C'est un piège pour voir si tu suivais :o
 
non par contre tu peux faire un MAX(id) GROUP BY forum_id et derrière une autojointure pour récup l'username /user_id correspondant au MAX(id)
 
Ou alors :
 
SELECT username,user_id,forum_id as f_id FROM forum_list LEFT JOIN post USING (forum_id) WHERE id=(SELECT MAX(id) FROM post WHERE forum_id=f_id)
 
Tient d'ailleurs par curiosité, me demande si ca marcherait : (c'est un peu tordu, vu que t'as une DEPENDANT SUBQUERY qui dépend elle même du GROUP BY forum_id :D
 
SELECT username,user_id,forum_id as f_id FROM post WHERE id=(SELECT MAX(id) FROM post WHERE forum_id=f_id) GROUP BY f_id


 
Je vais essayer pour voir :D
 

ratibus a écrit :

C'est pas plus simple d'updater un champ last_post_id à chaque post et de faire la jointure sur ce champ ?


 
C'est exactement ce que j'ai décidé de faire, hier soir, avant de m'endormir :D (quand on dit que la nuit porte conseil :o )


---------------
Gamertag: CoteBlack YeLL
n°1725422
Dj YeLL
$question = $to_be || !$to_be;
Posté le 28-04-2008 à 10:20:53  profilanswer
 

Joce > Le résultat est le bon ... et c'est ultra rapide ... seulement 23 secondes :whistle:


---------------
Gamertag: CoteBlack YeLL
n°1725454
chaced
Posté le 28-04-2008 à 10:52:06  profilanswer
 

Tu fais tes tests direct sur ton rps ou tu les fais sur une virtualbox / vmware ?


Message édité par chaced le 28-04-2008 à 10:52:19

---------------
CPU-Z | Timespy | Mes bd | Mon blog
n°1725459
Dj YeLL
$question = $to_be || !$to_be;
Posté le 28-04-2008 à 10:57:47  profilanswer
 

Parfois sur le serveur local, parfois sur le RPS.
 
Bon j'ai fini les modifs une fois de plus, cette fois si c'est la bonne :D
 
Là où la requête faisait 0.23 secondes pour générer la liste des forums, elle ne met plus que 0.06 secondes :)


---------------
Gamertag: CoteBlack YeLL
n°1725711
Dj YeLL
$question = $to_be || !$to_be;
Posté le 28-04-2008 à 16:02:00  profilanswer
 

Wala, nouvelle version en ligne, avec démonstration des droits :

 

http://www.byscripts.info/bysboard/

 

(j'ai pas retesté l'inscription depuis, donc s'il y en a qui y passent, vous me direz si ça marche pas :whistle: )

Message cité 1 fois
Message édité par Dj YeLL le 28-04-2008 à 16:02:28

---------------
Gamertag: CoteBlack YeLL
n°1725725
kao98
...
Posté le 28-04-2008 à 16:18:47  profilanswer
 

skoi AR à côté du forum inaccessible aux invités ?


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1725726
kao98
...
Posté le 28-04-2008 à 16:20:00  profilanswer
 

Et, le forum invisible aux membres est invisible aux membres, mais pas aux invités ? C'est normal ?
 
Pendant l'inscription, ça fait quoi si je modifie mon "code d'inscription" ? Tant qu'à l'afficher, laisse le en lecture seule si ça peut poser problème si je le modifie !
 
Et le forum inaccessible aux invités l'est également aux membres apparemment !
 
En fait, après mon inscription, il me connecte automatiquement, mais la liste des forums est inchangée, comme si les permissions, apparemment, ne changeait pas. Ca se confirme lorsque je veux créer un sujet dans le forum "normal".

Message cité 1 fois
Message édité par kao98 le 28-04-2008 à 16:24:04

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1725728
Dj YeLL
$question = $to_be || !$to_be;
Posté le 28-04-2008 à 16:28:56  profilanswer
 

kao98 a écrit :

skoi AR à côté du forum inaccessible aux invités ?


 
C'est temporaire, y'aura une icône "Accès Refusé"
 

kao98 a écrit :

Et, le forum invisible aux membres est invisible aux membres, mais pas aux invités ? C'est normal ?


 
Oui
 
 

kao98 a écrit :

Pendant l'inscription, ça fait quoi si je modifie mon "code d'inscription" ? Tant qu'à l'afficher, laisse le en lecture seule si ça peut poser problème si je le modifie !


 
Si tu le modifies, ça ne marchera évidemment pas :o Je pourrais le mettre en lecture seule oui, mais je n'en vois pas l'intérêt.
 

kao98 a écrit :

Et le forum inaccessible aux invités l'est également aux membres apparemment !


 
Ah ? Lorsque je me connecte en tant que simple membre, j'y ai pourtant accès ...
 

kao98 a écrit :

En fait, après mon inscription, il me connecte automatiquement, mais la liste des forums est inchangée, comme si les permissions, apparemment, ne changeait pas. Ca se confirme lorsque je veux créer un sujet dans le forum "normal".


 
 
Hum, je vais regarder, j'ai peut-être une idée. J'ai l'impression que le membre ne passe plus automatiquement dans le groupe "Membre" lors de l'inscription :whistle:


---------------
Gamertag: CoteBlack YeLL
n°1725729
Dj YeLL
$question = $to_be || !$to_be;
Posté le 28-04-2008 à 16:29:39  profilanswer
 

Je confirme, c'était bien ça :D Bon je t'ai passé dans le groupe membre manuellement, je vais corriger ça.


---------------
Gamertag: CoteBlack YeLL
n°1725731
Dj YeLL
$question = $to_be || !$to_be;
Posté le 28-04-2008 à 16:32:39  profilanswer
 

Fixed :o


---------------
Gamertag: CoteBlack YeLL
n°1725748
kao98
...
Posté le 28-04-2008 à 17:05:11  profilanswer
 

Citation :


Si tu le modifies, ça ne marchera évidemment pas :o Je pourrais le mettre en lecture seule oui, mais je n'en vois pas l'intérêt.


Ben, moi, à vrai dire, je ne vois même pas l'intérêt de l'afficher tout court ! Ce ne sert à rien pour le visiteur. Voir même, ça ouvre peut-être une faille de sécurité !
 

Citation :


Hum, je vais regarder, j'ai peut-être une idée. J'ai l'impression que le membre ne passe plus automatiquement dans le groupe "Membre" lors de l'inscription :whistle:


C'est bon, c'est corrigé  [:kao98]


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1725749
Dj YeLL
$question = $to_be || !$to_be;
Posté le 28-04-2008 à 17:08:30  profilanswer
 

kao98 a écrit :


Ben, moi, à vrai dire, je ne vois même pas l'intérêt de l'afficher tout court ! Ce ne sert à rien pour le visiteur. Voir même, ça ouvre peut-être une faille de sécurité !
 
C'est bon, c'est corrigé  [:kao98]


 
La même page est accessible avec ou sans les paramètres dans l'URL, le fait de mettre les paramètres pré-rempli les champs, rien de plus.
 
Au départ ils étaient affichés, mais en lecture seule, puis j'ai viré le lecture mais je ne sais plus pourquoi.


---------------
Gamertag: CoteBlack YeLL
n°1725821
zapan666
Tout est relatif
Posté le 28-04-2008 à 19:55:05  profilanswer
 

Dj YeLL a écrit :

Wala, nouvelle version en ligne, avec démonstration des droits :
 
http://www.byscripts.info/bysboard/
 
(j'ai pas retesté l'inscription depuis, donc s'il y en a qui y passent, vous me direz si ça marche pas :whistle: )


C'est normal que prévisualiser == valider ?


---------------
my flick r - Just Tab it !
n°1725833
Dj YeLL
$question = $to_be || !$to_be;
Posté le 28-04-2008 à 20:21:46  profilanswer
 

Autant que de ne pas pouvoir cliquer sur "Edit" ou "Del" oui :whistle:
 
Maintenant que j'ai enfin terminé les fondamentaux, je vais pouvoir passer aux fonctionnalités :o


---------------
Gamertag: CoteBlack YeLL
n°1725981
totoffe38
Posté le 29-04-2008 à 09:56:54  profilanswer
 

Sur la page d'acceuil du forum h.fr, quand je clique sur le drapeau rouge, on a un affichage des sujets qu'on a lu et ils sont regroupés par catégories. La feinte c'est que même si la catégorie n'a pas de message, elle est quand même affichée.
 
Je voudrais faire quelquechose de similaire, mais que la catégorie ne soit affichée que lorsqu'il y a un message lu qui en fait parti.
 
Alors j'ai pensé à:

Citation :

SELECT * FROM categories,articles WHERE articles.category_id=categories.id AND articles.user_id=3000


Mais maintenant le problème pour afficher ça, c'est que je veux juste que la catégorie soit affichée une fois, et je liste ses articles, ensuite catégorie suivante et ses articles.
 
Je pourrais faire ça avec 2 requêtes: une qui liste les catégories où il y a des articles, et une autre requête pour les articles, mais ça fait faire plein de boucle et de "if ... == ..." je trouve ça moche. Vous verrize ça comment?

n°1725985
fabien
Vive la super 5 !
Posté le 29-04-2008 à 10:03:37  profilanswer
 

tu rajouter un "order by id_cat" et ensuite tu fait le test:
$cat_precedente="";
 
while(...)
{
 
if($cat_actuel!=$cat_precedente)
{
   afficher $cat_actuel;
   $catprecedente=$cat_actuel;
}
affiche topic
}


---------------
Découvre le HFRcoin ✈ - smilies
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  467  468  469  ..  486  487  488  489  490  491

Aller à :
Ajouter une réponse
 

Sujets relatifs
question avec les forums phpbb2[php] trouver la premier place ou inserer un enregistrement (résolu)
Forums phpBBQui connait l'algo du Passticket et sa mise en place en VB ?
[Merise] Mise en place d'un MCDFocus mal placé....
[Blabla/Prog] Les développeurs foromeurs sont-ils des feignasses?Mise en place d'un formulaire CGI
forums création de site internetJava - Mise en place d'une api (Servlet)
Plus de sujets relatifs à : les développeurs de forums, les 3/4 des forums sont down /o\


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)