|
Publicité ' | ||||||||||||||||||||||||
|
|
#181 | ||
|
Membre confirmé
![]() Inscription : mai 2002 Messages : 342 ![]() |
Citation:
Citation:
|
||
|
|
00
|
|
|
#182 | |
![]() ![]() Inscription : novembre 2005 Messages : 3 868 ![]() |
je me suis mal exprimé.
Citation:
__________________
Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin. Cours | FAQ | Sources Javascript Cours | FAQ | Sources PHP Mes Articles |
|
|
|
00
|
|
|
#183 | |
|
Membre confirmé
![]() Inscription : mai 2002 Messages : 342 ![]() |
Oui en fait j'ai pas lu toute la doc, tu as raison effectivement pour les connexions simultanées siddh.
Mais tu peux inclure dans le code une petite pause (qq milisecondes) au script, le temps que les autres libère la connexion, comme cela les autres requètes ne perdent pas en vitesse d'exécution et sont mêmes incitées à terminer rapidement leur process. Pour avoir 20 connexions ou requètes simultannées sur un serveur web sur un site comme dvez.com je dirais (à vu de nez) qu'il faut peut -être une centaine d'utilisateurs (suivant la taille et le nombre des requètes) qui consultent le site, donc c'est pas si contraignant que cela (probabilités de clics simultanés). En fait ce qu'ils disent de retenir de cette fonction sur la doc : Citation:
|
|
|
|
00
|
|
|
#184 |
![]() ![]() Inscription : novembre 2005 Messages : 3 868 ![]() |
oui, c'est un plus mais faut juste faire gaffe.
Si tu as un dédié, tu fais ce que tu veux. Dans le cadre d'un hébergement mutualisé, ca peut peut etre coincer. Personnellement je n'utilise pas pconnect car je me suis fais une classe d'abstraction (que je vais modifier pour utiliser PDO) qui est un singleton donc je me fais ma persistance tout seul.
__________________
Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin. Cours | FAQ | Sources Javascript Cours | FAQ | Sources PHP Mes Articles |
|
|
00
|
|
|
#185 |
|
Membre confirmé
![]() Inscription : mai 2002 Messages : 342 ![]() |
ça a l'air intéressant, tu peux expliciter ta démarche (PDO?) en quelques mots ?!
|
|
|
00
|
|
|
#186 |
![]() ![]() Inscription : novembre 2005 Messages : 3 868 ![]() |
Pdo est une couche d'abstraction pour php 5:
http://fr3.php.net/pdo
__________________
Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin. Cours | FAQ | Sources Javascript Cours | FAQ | Sources PHP Mes Articles |
|
|
00
|
|
|
#187 | |
|
Membre confirmé
![]() Inscription : mai 2002 Messages : 342 ![]() |
Autre astuce :
Citation:
|
|
|
|
00
|
|
|
#188 | |
|
Membre confirmé
![]() Inscription : mai 2002 Messages : 342 ![]() |
Citation:
je ne vois pas le rapport avec les connexions persistantes... |
|
|
|
00
|
|
|
#189 |
![]() ![]() Inscription : novembre 2005 Messages : 3 868 ![]() |
ben tu met ca dans un objet dont tu te fais un singleton
__________________
Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin. Cours | FAQ | Sources Javascript Cours | FAQ | Sources PHP Mes Articles |
|
|
00
|
|
|
#190 |
|
Membre confirmé
![]() Inscription : mai 2002 Messages : 342 ![]() |
ok je viens de lire une page intéressante :
http://qwix.media-box.net/index.php/...ingletonEnPhp5 je pense que c'est le principe de ce que tu disais plus haut. Mais du coup, connaissant la programmation OO en java mais peu celle de php, je me pose la question de la durée de vie d'un objet en php ?! Ce que j'ai en tête pour l'instant, c'est que pour tout code php, la durée de vie des toutes les instances (variables, objets...) est égale à celle de l'exécution du script php, est ce bien cela ? Si c'est le cas, alors je vais me répéter en disant qu'il n'y a pas d'équivalents entre mysql_pconnect() et la connexion mysql via les objets PDO ! Si je me trompe alors explique moi car là je vois pas comment un objet php peut persister... (c'est d'ailleurs ce qui me fait douter de l'efficacité de la POO en php) sauf en utilisant les sessions (of course !) mais bon si faut d'abord mettre ça pour avoir ça... Sinon le coup des singletons est astucieux ! |
|
|
00
|
|
|
#191 |
![]() ![]() Inscription : novembre 2005 Messages : 3 868 ![]() |
oui tu met tes objets en session
__________________
Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin. Cours | FAQ | Sources Javascript Cours | FAQ | Sources PHP Mes Articles |
|
|
00
|
|
|
#192 |
|
Membre confirmé
![]() Inscription : mai 2002 Messages : 342 ![]() |
DSL je suis pas convaincu par PDO (j'aime pas les sessions c'est un peu lourd pour peu de choses bien que très pratique j'avoue), je préfère mysql_pconnect()
Merci pour tes explications en tout cas ! |
|
|
00
|
|
|
#193 |
|
Membre confirmé
![]() Inscription : mai 2002 Messages : 342 ![]() |
pour expliciter ce que je viens de dire précedemment.
Dans ce cas là les sessions demandent trop de ressources au système (à confirmer).En tout cas je préfère les réserver uniquement pour avoir un identifiant de connexion sur le site. Ensuite rien n'empêche de faire un équivalent "programmation orientée" objet en utilisant les bases de données comme moyen d'accès aux membres des objets (qui seraient enfait des tables...) et de remplacer les méthodes par des fonctions classiques. |
|
|
00
|
|
|
#194 |
|
Membre confirmé
![]() Inscription : mai 2002 Messages : 342 ![]() |
une autre astuce de performances pour exécuter un script php distant :
privilégiez la fonction fsockopen() ou stream_socket_client() vous perdez du temps en programmation, mais gagnez sur le temps d'exécution de votre script, voir le post suivant : http://www.developpez.net/forums/showthread.php?t=73445 |
|
|
00
|
|
|
#195 |
|
Membre chevronné
![]() |
Tu t'avances beaucoup je trouve...
Pour les connexions persistantes, c'est quasiment inutilisable en mutualisé. Et sur un dédié, il faut configurer MySQL pour accepter un grand nombre de connexion simultanées... ce qui veut dire beaucoup moins de mémoire disponible pour chacune de ces connexions, ce qui implique généralement pas mal d'accès disques supplémentaires... bref, dans ces conditions, ça empire largement les choses. Donc comme spécifié dans la doc, ça peut être très interessant, mais seulement dans certains contextes assez particuliers. Coté connexion persistante en session, à ma connaissance PHP coupera la connexion à la fin du script de toutes façons... donc lors de la ré-instanciation il faut se reconnecter... au final, je ne vois pas le gain. Pour mysql_query_unbuffered, oui, effectivement. Mais ce n'est pas adapté à toutes les utilisations : il est par exemple impossible de faire des appels imbriqués avec cette fonction. Pour ce qui est de ton ouverture par socket, il serait bien plus malin de faire une requete HEAD si tu ne souhaites pas récupèrer le contenu... |
|
|
00
|
|
|
#196 | |||
|
Membre confirmé
![]() Inscription : mai 2002 Messages : 342 ![]() |
Citation:
Citation:
Citation:
Mon pb n'était pas sur la requète HTTP, mais sur la façon d'exécuter un script distant ! |
|||
|
|
00
|
|
|
#197 | |||
|
Membre chevronné
![]() |
Citation:
Citation:
Citation:
De plus, un script bien fait ne fera pas l'affichage dans le cas d'une requete HEAD, il se contentera du comportement attendu par le script. |
|||
|
|
00
|
|
|
#198 |
|
Membre confirmé
![]() Inscription : mai 2002 Messages : 342 ![]() |
pour le mysql_pconnect(), si tu penses qu'il vaut mieux créer de nouvelles connexions à chaque exécution du script, c'est toi qui voit.
Pour l'histoire du HEAD, ce que tu dis n'a pas de sens et est faux, c'est juste une histoire d'économie de bande passante, et cela n'affecte pas les ressources mobilisées par le seveur lamp/wamp (comment veux tu récupérer seulement l'entête d'une page php sans attendre la fin de son exécution et sans même connaître la totalité de son contenu ??? voilà une autre doc : http://clx.anet.fr/spip/article.php3?id_article=111 |
|
|
00
|
|
|
#199 | ||||||
|
Membre chevronné
![]() |
Citation:
Dans le cas d'un serveur mutualisé, avec une cinquantaine de sites, on monte donc à 1000 connexions simultanées ouvertes. Donc ton serveur MySQL, qui en temps normal déssert 10 connexions simultanées, auxquelles il alloue par exemple 256Mo de données (soit 25Mo chacune) pour les différents buffers va donc se retrouver avec 1000 connexions se partageant ces mêmes 256Mo (soit 256Ko chacune...). Bref, ça va coincer. Plusieurs problèmes peuvent arriver : - si PHP limite le nombre de connexions persistantes, certains scripts ne pourront pas du tout se connecter - si MySQL limite le nombre de connexions simultanées, certains scripts ne pourront pas du tout se connecter - si MySQL n'est pas configuré pour accepter autant de connexions, il va consommer trop de mémoire, l'OS va swapper à mort - si MySQL est configuré pour accepter autant de connexions sans toutefois avoir 10Go de mémoire sur la machine, cela veut dire que les threads auront moins de mémoire disponible, et feront donc plus d'accès disques qu'en temps normal. Au final, les 50ms gagnés sur le temps de connexion coté PHP, tu les perds souvent coté MySQL au centuple. Avant de mettre en place les connexions persistantes, il faut donc s'assurer qu'Apache, PHP et MySQL soient configurés pour. Et ce n'est certainement pas en faisant 3/4 tests que tu le sauras. Citation:
Citation:
Code :
Le script arrête simplement son éxécution lorsqu'il voit que l'affichage n'est pas requis. Il y a fort à parier que les classes comme JPCache gèrent également ces mécanismes de base du protocole HTTP. Citation:
|
||||||
|
|
00
|
|
|
#200 |
|
Membre confirmé
![]() Inscription : mai 2002 Messages : 342 ![]() |
Ben écoute puisque tu as l'air si sûr de toi écris donc sur le site php.net à la rubrique des connexions persistantes ça permettrait d'informer les lecteurs des limites sur mysql_pconnect() ce qui est intéressant ! (bien que j'ai rien compris à ta démonstration désolé
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com