seif_scalp Posté 14 Juin 2007 Posté 14 Juin 2007 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 !
Nanane Posté 14 Juin 2007 Posté 14 Juin 2007 (modifié) Bonjour, Si c'est bien ce que j'ai compris, ecrire dans un fichier ne necessite pas d'effacer son contenu http://w3schools.com/php/php_file.asp l'option Append est la pour ca Modifié 14 Juin 2007 par Nanane
seif_scalp Posté 14 Juin 2007 Auteur Posté 14 Juin 2007 non je parlais de l'update d'un array dans un fichier et sinon toujours intéressé par la meilleur ptimisation selon vous ...
Nanane Posté 14 Juin 2007 Posté 14 Juin 2007 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 )
seif_scalp Posté 14 Juin 2007 Auteur Posté 14 Juin 2007 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
petit-ourson Posté 14 Juin 2007 Posté 14 Juin 2007 ou utiliser un système de cache comme : (Memcache http://fr3.php.net/manual/fr/ref.memcache.php) De toute façon, une table de 2000 lignes, c'est vraiment pas beaucoup. Sinon utilise une table en mémoire (plus rapide) : http://dev.mysql.com/doc/refman/5.0/fr/mem...age-engine.html
seif_scalp Posté 14 Juin 2007 Auteur Posté 14 Juin 2007 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
petit-ourson Posté 14 Juin 2007 Posté 14 Juin 2007 euh si tu fais pas des "select * from tatable" systématiquement et si tes requêtes sont bien conçu, non ce n'est pas spécialement un gros truc.
pluriels Posté 19 Juin 2007 Posté 19 Juin 2007 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 ?
Nanane Posté 20 Juin 2007 Posté 20 Juin 2007 (modifié) 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 ) Et je crois que c'est tout PS : ça fait 40 000 000 octets, soit 40Mo... eh non, ca en fait 39 Modifié 20 Juin 2007 par Nanane
pluriels Posté 20 Juin 2007 Posté 20 Juin 2007 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.
destroyedlolo Posté 20 Juin 2007 Posté 20 Juin 2007 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.
seif_scalp Posté 20 Juin 2007 Auteur Posté 20 Juin 2007 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
pluriels Posté 20 Juin 2007 Posté 20 Juin 2007 (modifié) c'est ton choix ! 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é 20 Juin 2007 par pluriels
Nanane Posté 20 Juin 2007 Posté 20 Juin 2007 (modifié) 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 (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 Modifié 20 Juin 2007 par Nanane
seif_scalp Posté 21 Juin 2007 Auteur Posté 21 Juin 2007 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant