Aller au contenu

array ou mysql


seif_scalp

Sujets conseillés

Bonjour,

je suis nouveau membre mais pas nouveau programmeur php, j'ai un bon bagage derrière moi et je me demandais notammant pour l'optimisaton de mon prochain site, ce qui serait le mieux :

- une table mysql d'une centaine de champs avec 2000 enregistrements même si j'utilise une indexation ça me forcera à ouvrir x fois la connexion mysql pour y chercher les différents points qui m'intéressent donc moyen moyen pour l'optimisation

- un array se trouvant dans un fichier qui comporte donc 100 champs, et donc 2000 fichiers avec un array dans chaque ...

si la réponse est l'array, j'ai beaucoup cherché à travers la doc php concernant les array et je voulais savoir si vous aviez une autre méthode plus efficace pour l'update que supprimer le fichier et le réécrire en entier ... car si on doit faire ça pour les 100 champs ça deviens ingérable ... ici je parle donc de la méthode array_shift

dont j'ai lu un exemple ici même qui se rapproche le plus de ce que je recherche : http://www.webmaster-hub.com/index.php?s=&...st&p=228376

Merci d'avance pour votre aide !

Lien vers le commentaire
Partager sur d’autres sites

la meilleure solution pour moi doit etre la base de données... mais il faut créer des relations etc... pour faciliter le regroupement d'informations ^^ enfin je suppose que tout est deja fait... Je ne suis qu'étudiant pour le moment, je n'ai aucun bagage derriere moi, je dis juste ce que je pense, en reflechissant par rapport a ce que j'ai appris.

Donc pour ma part une base de données peut largement suffire (100 champs et 2000 enregistrements, c'est sans doute que la base est mal concue je pense ^^ )

Lien vers le commentaire
Partager sur d’autres sites

moi aussi étudiant ^^ en médecine pas info ... mais j'ai 6 ans de prog ( temps libre principalement ) ...

oui en effet la base de donnée peut-etre optimisé, je crois que je vais remettre en place mon code par la base de donnée mais jtrouve ça chiant ... jvais en profiter pour optimiser par une mise en mémoire cache de mysql pour ma requete

merci ;)

Lien vers le commentaire
Partager sur d’autres sites

en effet 2000 ligne c'est pas beaucoup mas tu multiplie ça par 100 et dans la table il y a 100 champs ... ça deviens lourd si chaque visiteur l'ouvre à chak fois qu'il charge une page ... ^^

merci pour les liens de cache :)

Lien vers le commentaire
Partager sur d’autres sites

2000 lignes avec 100 champs de 200 caractères, ça fait 40 000 000 octets, soit 40Mo...

Il faut surtout bien analyser la structure de ta base, une ou plusieurs tables.

Ensuite bien écrire tes requêtes.

Pour bien analyser ta base, je te conseille MERISE pour commencer

http://www.sam-mag.com/P53,53,5,43,,,default.aspx

autre élément à prendre en compte, est-il pratique d'afficher les 2000 lignes en même temps ?

tu peux introduire un système de pages

ou encore permettre à ton visiteur d'effectuer une recherche plutôt que d'afficher l'ensemble.

Encore un autre point, le plus long dans l'utilisation PHP / MySQL, c'est la connexion à la base.

Normalement, dans l'ordre :

connexion

exécution de la requête

fermeture de la connexion

Ce que je vois pas, c'est pourquoi faire une requête pour chacune des lignes ?

Lien vers le commentaire
Partager sur d’autres sites

Je crois que tout a été dit :

- Optimiser tes requetes (pas de SELECT * FROM latable)

- Bien structurer ta base de données ( Je prefere l'UML a Merise... mais c'est purement la faute de mon prof de Merise :P)

Et je crois que c'est tout

PS :

ça fait 40 000 000 octets, soit 40Mo...

eh non, ca en fait 39 ;)

Modifié par Nanane
Lien vers le commentaire
Partager sur d’autres sites

ah oui pardon !

C'est pareil quand j'achète un disque dur 300 Go...

UML vs MERISE

UML est un brin complet pour ce qui nous concerne.

MERISE est plus simple pour commencer.

Lien vers le commentaire
Partager sur d’autres sites

Perso, je suis adepte des fichiers a plat justement pour des problemes de perfs mais uniquement pour des donnees plus ou moins statiques et ou la recherche se fait par un simple Clef -> Donnee. Si ce sont des donnees dynamiques et surtout si elles sont mise a jour de maniere interactive par tes utilisateurs, ou si evidement il y a besoin de faire des recherches complexes, alors une BD est plus indiquee car elle gerera d'elle meme les problemes d'access concurrent au donnee ... c'est plus $#%@#^&@ en fichier a plat.

L'autre avantage des fichiers a plat, c'est que tu peux facilement associer des Actions a ces fichiers : c'est donc Apache lui meme qui se chargera d'appeler tel ou tel script. Extremement simple a mettre en place, flexible et surtout tres rapide.

si j'utilise une indexation ça me forcera à ouvrir x fois la connexion mysql pour y chercher les différents points qui m'intéressent donc moyen moyen pour l'optimisation

Ce n'est pas un probleme si tu utilises des connections persistantes.

Lien vers le commentaire
Partager sur d’autres sites

pour l'optimisation ça fait déjà un bon moment que je les optimise au max en ce qui concerne le SELECT, mais par ailleurs avec l'indexation ...

sinon en ce qui concerne MERISE j'ai rapidement regardé, est ce que cela correspond au fait de partitionner ces tables pour en faire 4 de 25 champs au lieux d'une de 1 champs ? enfin j'ai pas tout compris...

merci pour toutes vos réponses en tout cas, et donc je vais me servir de mysql mais ayant basé toute ma prog sur un array ^^ je crois que pour me faciliter le boulot je vais utiliser mysql pour compléter cet array ^^

Lien vers le commentaire
Partager sur d’autres sites

c'est ton choix ! :D

parle nous plutôt de ton projet, qu'on fasse une belle étude de cas...

Quand nous parlons d'analyse, nous parlons souvent d'UML ou MERISE.

Un projet bien analysé au départ, pas forcément un cahier des charges de 150 pages, mais une bonne réflexion sur le projet permet de partir sur de bons rails.

Si l'analyse n'est pas suffisante, on est vite tenté de rattraper avec des rustines par-ci et par-là.

Si tu veux de l'aide pour l'analyse, n'hésite pas à nous présenter ton projet

Par exemple :

Je veux faire un site sur les jeux videos.

pour un jeu, il y a un titre, un editeur, un distributeur, une ou de langues, une configuration minimale, une ou des plateformes, une catégorie, une date de sortie, etc...

on peut donc faire une grosse table de jeux avec toutes ces informations.

Mais en y pensant bien, on pourrait faire une table des éditeurs...

Et puis une table des plate-formes...

Le but n'est pas de découper les 100 champs de ta table en 4 tables de 25, mais plutôt de les organiser logiquement.

Modifié par pluriels
Lien vers le commentaire
Partager sur d’autres sites

Comme je disais... une Base de données relationnelle gère des relations entre des entités ^^

UML et Merise sont la pour déterminer comment faire comprendre a la base de données le type de relation que les entités de ton projet ont entre elles. (par exemple, apres avoir creer une table jeux, et une table plateforme, il faut pouvoir lier les 2, ca peut demander la creation d'une table aussi ^^ )

Je partage la curiosité de Pluriels concernant ton projet et si ce n'est pas indiscret pourrais tu nous fournir plus de détails :D

(un "gros" pavé décrivant ce que ton systeme d'informations doit pouvoir gérer)

Beaucoup de choses sont discutables en analyse, c'est ca qui est bien :D

Modifié par Nanane
Lien vers le commentaire
Partager sur d’autres sites

oui alors en fait j'utilise MERISE ou UML ( j'ai pas tout compris à votre truc, de ce que j'ai compris ce serai un plan des taches à faire pourune meilleure oganisation ) ... donc depuis le début, sans m'en rendre compte, rien que pour la création de mon forum qui est basé sur une charte graphique très similaire a vbulletin j'ai utilisé 4 tables qui se lisent et se rejoignentles une les autres constamment ... même deux base de donnée pour associé le forum et le site et sur le sites ayant déjà une table membre ! ...

euh en ce qui concerne mon projet, je n'en parlerai point, je préfère vous faire la surprise et vous le présenter fini dans quelques semaines au cours de juillet ... a raison de 5 h de prog par jour depuis 15j j'ai déjà pas mal avancé

merci pour toutes vos réponses et je prend en compte vos recommandations :smartass:

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...