|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 127 ![]() |
Hello à tous !
Deuxième question de noob (je n'ai pas d'expérience en php donc je découvre...), cette fois concernant la fonction "include" et les sessions (et autre) Voilà, je bosse sur un projet de site avec inscription et connexion de membres, et dialogue donc avec une base de données. J'ai un fichier index.php dans lequel j'ai quelques iframe, qui me permettent de layouter (copyright ! ) facilement mes pages (menu du haut, menu de gauche, et container).A part cela, j'ai donc une base de données, et une session afin de faciliter la sauvegarde des données de page en page. Par contre, voilà mon problème : apparemment je connais pas bien "include" car je pensais que ca chargeait mon code directement dans la page index.php. De ce fait, je pensais qu'il me suffirait de faire un session_start() en haut de la page index.php ainsi qu'ouvrir la connexion à la base de données, pour que toutes mes pages y aient accès... Ben voui, puisque je pensais que le code était inclus (d'où le mot "include()"... Et ben non !Je suis malgré tout obligé d'appeler session_start() dans chaque page php, même si je l'include dans index.php, et pareil pour la connexion ! (moi qui voulais optimiser le nombre de connexions à ma base, ben j'ai foiré... Pour ce qui est de la connexion a la BDD, j'ai meme tenté un mysql_pconnect() que je n'appelle qu'une fois, mais non, ca marche pas non plus (il me dit, dans une autre page, qu'il est impossible de contacter blablabla, bref pas de connexion a la BDD quoi). Alors... Est ce que je suis donc vraiment obligé de continuer comme j'ai fait maintenant ? (c'est à dire un session_start() et un mysql_connect() pour CHAQUE page.............) Si vous avez des tips, conseils ou autre, je suis preneur (j'ai parcouru les forums et la faq mais rien de satisfaisant). Merci à tous les PHPiens ! Lideln |
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Inscription : juin 2006 Messages : 646 ![]() |
Salut, malheureusement pour toi oui. Si tu veux récupérer une variable provenant d'une autre page, il faut passer par les variables de sessions. Pour la connexion à la BDD, c'est pareil, sur chaque où tu veux te connecter à ta BDD, tu dois faire un mysql_connect. Il me semble qu'il est possible de mettre le mysql_connect dans une page à part, mais tu seras obligé d'appeler cette page à chaque fois. Désolé pour toi.
__________________
(\ _ /) (='.'=) Voici Lapinou. Aidez le à conquérir le monde (")-(") en le reproduisant. http://mosfootball.over-blog.com |
|
|
00
|
|
|
#3 | ||
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 127 ![]() |
Je me permets d'ajouter une chtite question javascript
J'ai une fonction qui affiche/cache un élément "div". J'appelle cette fonction dans un lien, du genre : Code :
Donc ca marche impec, c zoli et tout, mais par contre ! Quand j'essaie d'appeler cette fonction "en brut", c'est à dire dans le "onLoad" d'un body, ou comme n'importe quelle instruction php, ca marche pas Je l'appelle pourtant pareil : [code] <?php echo '<script>javascript:toggleVisible(\'mon_div\')</script>'; ?> [/php] un truc du genre Ben ca marche pas.... Si quelqu'un sait ce que j'ai fait de faux... (la fonction est dans un .js que j'inclus en début de page) Merci encore Lideln |
||
|
|
00
|
|
|
#4 |
|
Membre émérite
![]() |
Pour le session_start() j'en ait 1 et 1 seul dans mon code et il est dans une page qui est inclue par toutes les autres donc tu dois avoir un souci au niveau de tes inclusions car ça fonctionne très bien pour moi ^^
En ce qui concerne la connection à la BDD c'est une autre histoire il te faut en effet te connecter à chaque requête mais bon il te suffit de gérer ça dans une fonction "quifétou" (copyright aussi ) se connecte, exécute ta requête, te renvoie le résultat !
|
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() ![]() Inscription : avril 2003 Messages : 3 286 ![]() |
Si mes souvenirs sont bons, le mysql_pconnect il faut le faire à chaque fois, seulement si une connexion persistante existe déjà il ne se reconnecte pas.
Par contre, toujours si mes souvenirs sont bons, c'est plutôt mauvais au niveau des performances du côté du serveur mysql (ça laisse les connexions ouvertes, donc ça augmente le nombre de connexions et on peut saturer). Voilà, tout ça c'est sous réserve de vérification (flemme du lundi matin)
__________________
Tous mes tutoriels Pas de questions techniques par MP ni par e-mail, merci ! Prolog rules! |
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 127 ![]() |
Wow griese merci pour cette réponse d'une rapidité fulgurante
D'accord... C'est d'ailleurs ce que j'ai fait, j'ai ma fonction de connexion (avec gestion d'erreur et tout le tralala) dans un fichier php que j'inclus, mais justement, mon interrogation venait de là, puisque le mysql_connect() n'est valable que dans un script (il meurt à la fin du script), or ca marche si j'include le script qui contient le mysql_connect(). Mais par contre ca marche pas quand le script qui inclue le script qui contient mysql_connect() inclue aussi un autre script (oula ca devient compliqué lol) C'est ca que je trouvais bizarre... Enfin merci de ta réponse, je vais laisse comme c'est, donc Thx, Lideln |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 127 ![]() |
Merci pour vos réponses rapides, décidément j'aurai pas le temps de me remettre au boulot, vous allez trop vite
Guitou12, oui j'ai aussi un session_start() dans un fichier que j'include, mais je trouvais ca bizarre en fait d'avoir une page qui en include plein d'autre, et que ces pages là ne puissent pas bénéficier automatiquement du session_start() de la page qui les a include (index.php)... Eusebius, oui, il me semble aussi que lorsqu'on appelle mysql_pconnect(), il vérifie si une connexion est déjà active et la retourne si c'est le cas. Par contre, pour ce qui est des perf, vu que tous les membres du site se connectent toujours avec le meme nom d'utilisateur et mot de passe (les miens quoi), en gros j'aurai une seule connexion... ? Graaa je m'y perds, ca y est Pour l'instant je n'ai que ma page perso Free comme hébergeur, mais j'aimerais faire un site qui permette un peu le meme genre de choses que meetic, mais en totally free (désolé si ca vous parait un peu bidon, mais bon je fais ca dans mon temps libre...) C'est a dire : plein de connectés en meme temps, envoi de messages type mail, recherche de membres, affichage des profils etc, et si j'y arrive éventuellement un chat (mais ca c'est vraiment pas sûr, car je considère que ca servira pas a grand chose, des chats gratuits yen a plein, et des bien plus performants et sympas que ce que je pourrais faire lol ) Voila voila... Est ce réalisable ? J'espere (et je pense) que oui, mais vous etes plus habitués que moi a ce genre de choses, donc votre avis compte |
|
|
00
|
|
|
#8 | |
|
Membre Expert
![]() Bidouille-tout Android Inscription : juillet 2006 Messages : 871 ![]() |
Ben deja en principe tu fait une connection PAR requete et pares tu ferme, tu reste pas connecté pour rien
si tu veux de simplifier la vie fait une classe "database" par ex oû tu met une methode pour se connecter, c'est assez simple : Citation:
include("./le/chemin/de/ta/classe/database.php"); declare la variable : global $base; ou de session pour toi apparement $_SESSION['base']; tu l'instancie : $base = new Database(); ou $_SESSION['base'] =new Database(); apres pout tes requetes tu es penard : $resultatRequete = mysql_query("SELECT machin FROM truc WHERE etc", $base->DB_CONN()); ou encore $resultatRequete = mysql_query("SELECT machin FROM truc WHERE etc", $_SESSION['base']->DB_CONN()); voila c'est le plus simple que je peut te proposer... @+ |
|
|
|
00
|
|
|
#9 | |
|
Membre Expert
![]() Bidouille-tout Android Inscription : juillet 2006 Messages : 871 ![]() |
Citation:
|
|
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 127 ![]() |
Merci SnakemaN pour cette énorme réponse, plein d'infos que je m'empresserai de mettre à exécution une fois chez moi ce soir
Par contre, j'ai toujours une incertitude : j'avais lu quelque part qu'il fallait au MAXIMUM minimiser les connexions à la base de données, car ca prend beaucoup de temps (par rapport à une simple requete). Donc si je fais une connexion pour chaque requete, ca risque pas d'etre moyen, niveau performances ? (j'y connais rien, je te dis juste ce que j'ai lu sur un site qui parlait de mysql) Lid |
|
|
00
|
|
|
#11 | |
|
Expert Confirmé
![]() ![]() Inscription : avril 2003 Messages : 3 286 ![]() |
Citation:
__________________
Tous mes tutoriels Pas de questions techniques par MP ni par e-mail, merci ! Prolog rules! |
|
|
|
00
|
|
|
#12 | |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 127 ![]() |
Citation:
Mais reste toujours cette incertitude concernant les performances... Si l'on admet que la connexion à la BDD est très lente par rapport à une requete (sur un site j'ai lu que le rapport était de 10, voire 100 je sais plus, mais un gros truc quoi), et si on admet qu'il pourrait y avoir 3 000 connectés en meme temps sur le site (donc potentiellement 3000 requetes a chaque instant, soit 3000 demandes de connexion à la BDD), ca pose pas un sérieux pb de perfs ? désolé si je dis nimp lol j'y connais encore pas grand chose .... |
|
|
|
00
|
|
|
#13 | |
|
Expert Confirmé
![]() ![]() Inscription : avril 2003 Messages : 3 286 ![]() |
Citation:
Il ne faut pas ouvrir de connexion pour rien, et regrouper au maximum les requêtes...
__________________
Tous mes tutoriels Pas de questions techniques par MP ni par e-mail, merci ! Prolog rules! |
|
|
|
00
|
|
|
#14 |
|
Expert Confirmé
![]() ![]() Inscription : avril 2003 Messages : 3 286 ![]() |
Je te conseille d'aller discuter de tes problèmes de performances sur le forum MySQL, il y a des experts qui sauront t'expliquer tout ça très bien.
__________________
Tous mes tutoriels Pas de questions techniques par MP ni par e-mail, merci ! Prolog rules! |
|
|
00
|
|
|
#15 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 127 ![]() |
Oki Eusebius, je resterai donc sur le mysql_connect() pour l'instant...
Car si on rentre trop dans les détails, genre le pool de connexions et tout, ben je vais etre largué lol C'est pas toi qui déconseillais mysql_pconnect() d'ailleurs dans un des threads... ? Il me semble... |
|
|
00
|
|
|
#16 |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 127 ![]() |
Merci pour ces infos Eusebius, et SnakemaN.
Je vais en effet aller faire un petit tour sur le forum mysql pdt la pause déjeuner... Merci encore pour vos réponses ! Lideln |
|
|
00
|
|
|
#17 | ||
|
Membre confirmé
![]() Inscription : juin 2006 Messages : 646 ![]() |
Citation:
Citation:
__________________
(\ _ /) (='.'=) Voici Lapinou. Aidez le à conquérir le monde (")-(") en le reproduisant. http://mosfootball.over-blog.com |
||
|
|
00
|
|
|
#18 | |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 127 ![]() |
Merci
Citation:
Donc merci pour cette réponse ! Et au fait, impeccable ton avatar de bob l'éponge (j'adore ! les tetes trop délirantes qu'ils ont les personnages dans la série et dans le film ! lol) Merci encore pour la réponse A+ Lideln |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com