Sur un site en PHP/MySQL, je cherche à mesurer la durée d'exécution
d'une requête... mais sans la durée de la connexion de PHP à la base MySQL.
La doc MySQL précise que toutes les fonctions CurDate et autres sont
évaluées une seule fois au début de l'exécution, donc pas moyen
d'utiliser ça.
Faire une première requête d'obtention de la sysdate, lancer la requête
à exécuter puis une troisième visant à obtenir à nouveau la sysdate me
semble ne faire que multiplier le temps de connexion par trois, alors
que je cherche à l'éliminer ?
La solution sur laquelle je suis en ce moment consiste à faire un
"tarage" de mes durée. Je mesure la durée d'une requête minimale "SELECT
1", y compris l'aller-retour entre PHP et MySQL, et cela me donne ma tare.
Je mesure ensuite la durée de ma requête, toujours aller-retour
PHP/MySQL compris. Le temps d'exécution "pur" serait donc
durée_requête - tare.
Ce n'est pas très propre et les résultats le sont encore moins. Le pb
est que les durées sont très aléatoires, et qu'il arrive
fréquemment que la tare soit supérieure à la durée de la requête...
j'essaie de lisser tout cela en faisant une moyenne sur 100 exécutions
de chaque requête, et cela améliore un peu les choses, mais pas
énormément...
voyez-vous ce qui cloche ? avez-vous de meilleures idées ?
Par ailleurs, phpMyAdmin donne des durées de requêtes. Savez-vous
comment elles sont mesurées ?
Sur un site en PHP/MySQL, je cherche à mesurer la durée d'exécution d'une requête... mais sans la durée de la connexion de PHP à la base MySQL.
[../..]
voyez-vous ce qui cloche ? avez-vous de meilleures idées ?
oui tu te connectes en ligne de commande à ta base en local, et tu executes ta requetes.
Par ailleurs, phpMyAdmin donne des durées de requêtes. Savez-vous comment elles sont mesurées ?
oui par le même principe que l'interpreteur de commande SQL de mysql. Le SQL est un vrai langage, il comporte beaucoup plus de fonction que la simple manipulation des données et du dictionnaire de donné.
Sur un site en PHP/MySQL, je cherche à mesurer la durée d'exécution
d'une requête... mais sans la durée de la connexion de PHP à la base MySQL.
[../..]
voyez-vous ce qui cloche ? avez-vous de meilleures idées ?
oui tu te connectes en ligne de commande à ta base en local, et tu
executes ta requetes.
Par ailleurs, phpMyAdmin donne des durées de requêtes. Savez-vous
comment elles sont mesurées ?
oui par le même principe que l'interpreteur de commande SQL de mysql. Le
SQL est un vrai langage, il comporte beaucoup plus de fonction que la
simple manipulation des données et du dictionnaire de donné.
Sur un site en PHP/MySQL, je cherche à mesurer la durée d'exécution d'une requête... mais sans la durée de la connexion de PHP à la base MySQL.
[../..]
voyez-vous ce qui cloche ? avez-vous de meilleures idées ?
oui tu te connectes en ligne de commande à ta base en local, et tu executes ta requetes.
Par ailleurs, phpMyAdmin donne des durées de requêtes. Savez-vous comment elles sont mesurées ?
oui par le même principe que l'interpreteur de commande SQL de mysql. Le SQL est un vrai langage, il comporte beaucoup plus de fonction que la simple manipulation des données et du dictionnaire de donné.
Sur un site en PHP/MySQL, je cherche à mesurer la durée d'exécution d'une requête... mais sans la durée de la connexion de PHP à la base MySQL.
[../..]
voyez-vous ce qui cloche ? avez-vous de meilleures idées ?
oui tu te connectes en ligne de commande à ta base en local, et tu executes ta requetes.
je précise que je suis chez un hébergeur (en l'occurrence Free) dont je doute qu'il me laisse faire ça
Par ailleurs, phpMyAdmin donne des durées de requêtes. Savez-vous comment elles sont mesurées ?
oui par le même principe que l'interpreteur de commande SQL de mysql. Le SQL est un vrai langage, il comporte beaucoup plus de fonction que la simple manipulation des données et du dictionnaire de donné.
j'ai bien peur de tout ignorer des commandes en questions... peux-tu m'en dire un peu + ?
RAKOTOMALALA Renaud a écrit:
Antoine Dinimant a écrit :
Bonjour,
Sur un site en PHP/MySQL, je cherche à mesurer la durée d'exécution
d'une requête... mais sans la durée de la connexion de PHP à la base
MySQL.
[../..]
voyez-vous ce qui cloche ? avez-vous de meilleures idées ?
oui tu te connectes en ligne de commande à ta base en local, et tu
executes ta requetes.
je précise que je suis chez un hébergeur (en l'occurrence Free) dont je
doute qu'il me laisse faire ça
Par ailleurs, phpMyAdmin donne des durées de requêtes. Savez-vous
comment elles sont mesurées ?
oui par le même principe que l'interpreteur de commande SQL de mysql. Le
SQL est un vrai langage, il comporte beaucoup plus de fonction que la
simple manipulation des données et du dictionnaire de donné.
j'ai bien peur de tout ignorer des commandes en questions... peux-tu
m'en dire un peu + ?
Sur un site en PHP/MySQL, je cherche à mesurer la durée d'exécution d'une requête... mais sans la durée de la connexion de PHP à la base MySQL.
[../..]
voyez-vous ce qui cloche ? avez-vous de meilleures idées ?
oui tu te connectes en ligne de commande à ta base en local, et tu executes ta requetes.
je précise que je suis chez un hébergeur (en l'occurrence Free) dont je doute qu'il me laisse faire ça
Par ailleurs, phpMyAdmin donne des durées de requêtes. Savez-vous comment elles sont mesurées ?
oui par le même principe que l'interpreteur de commande SQL de mysql. Le SQL est un vrai langage, il comporte beaucoup plus de fonction que la simple manipulation des données et du dictionnaire de donné.
j'ai bien peur de tout ignorer des commandes en questions... peux-tu m'en dire un peu + ?
Pimousse
une solution pourrait être la suivante : - récupérer le temps en microsecondes - lancer la requête - récupérer le temps en microsecondes et faire la différence avec le précédent
ce qui donne en code php :
$time_debut=@explode(' ',@microtime());
// // TON CODE PHP, DONT PAR EX TA REQUETE MYSQL //
ça répond à ta question ? et ahma, c'est comme ça que procède phpmyadmin.
@++ Pimousse
une solution pourrait être la suivante :
- récupérer le temps en microsecondes
- lancer la requête
- récupérer le temps en microsecondes et faire la différence avec le
précédent
ce qui donne en code php :
$time_debut=@explode(' ',@microtime());
//
// TON CODE PHP, DONT PAR EX TA REQUETE MYSQL
//
une solution pourrait être la suivante : - récupérer le temps en microsecondes - lancer la requête - récupérer le temps en microsecondes et faire la différence avec le précédent
ce qui donne en code php :
$time_debut=@explode(' ',@microtime());
// // TON CODE PHP, DONT PAR EX TA REQUETE MYSQL //
ça répond à ta question ? et ahma, c'est comme ça que procède phpmyadmin.
@++ Pimousse
Antoine Dinimant
c'est exactement ce que je fais... mais là je prends le temps de la discussion entre PHP et MySQL, ce que je souhaite éviter...
Pimousse a écrit:
une solution pourrait être la suivante : - récupérer le temps en microsecondes - lancer la requête - récupérer le temps en microsecondes et faire la différence avec le précédent
ce qui donne en code php :
$time_debut=@explode(' ',@microtime());
// // TON CODE PHP, DONT PAR EX TA REQUETE MYSQL //
ça répond à ta question ? et ahma, c'est comme ça que procède phpmyadmin.
@++ Pimousse
c'est exactement ce que je fais... mais là je prends le temps de la
discussion entre PHP et MySQL, ce que je souhaite éviter...
Pimousse a écrit:
une solution pourrait être la suivante :
- récupérer le temps en microsecondes
- lancer la requête
- récupérer le temps en microsecondes et faire la différence avec le
précédent
ce qui donne en code php :
$time_debut=@explode(' ',@microtime());
//
// TON CODE PHP, DONT PAR EX TA REQUETE MYSQL
//
c'est exactement ce que je fais... mais là je prends le temps de la discussion entre PHP et MySQL, ce que je souhaite éviter...
Pimousse a écrit:
une solution pourrait être la suivante : - récupérer le temps en microsecondes - lancer la requête - récupérer le temps en microsecondes et faire la différence avec le précédent
ce qui donne en code php :
$time_debut=@explode(' ',@microtime());
// // TON CODE PHP, DONT PAR EX TA REQUETE MYSQL //
ça répond à ta question ? et ahma, c'est comme ça que procède phpmyadmin.
@++ Pimousse
Antoine Dinimant
Comme il semblerait que ma première formulation n'était pas très claire je dirai cela autrement : je cherche à faire mesurer la durée de ma requête *par MySQL*
(et sans introduire des artefacts par des aller-retours entre PHP et MySQL)
Comme il semblerait que ma première formulation n'était pas très claire
je dirai cela autrement : je cherche à faire mesurer la durée de ma
requête *par MySQL*
(et sans introduire des artefacts par des aller-retours entre PHP et MySQL)
Comme il semblerait que ma première formulation n'était pas très claire je dirai cela autrement : je cherche à faire mesurer la durée de ma requête *par MySQL*
(et sans introduire des artefacts par des aller-retours entre PHP et MySQL)
Akades
Antoine Dinimant wrote:
Bonjour,
Bonjour,
Sur un site en PHP/MySQL, je cherche à mesurer la durée d'exécution d'une requête... mais sans la durée de la connexion de PHP à la base MySQL.
La doc MySQL précise que toutes les fonctions CurDate et autres sont évaluées une seule fois au début de l'exécution, donc pas moyen d'utiliser ça.
Si tu attaques MySQL avec un connexion permanente, le temps de connexion ne devrait pas être pris en compte. Me trompes-je ?
Par ailleurs, phpMyAdmin donne des durées de requêtes. Savez-vous comment elles sont mesurées ?
Très bonne question que tu aurais dû te poser plus tôt. :) A laquelle je répondrais ... Regardes le code.
@++
Antoine Dinimant wrote:
Bonjour,
Bonjour,
Sur un site en PHP/MySQL, je cherche à mesurer la durée d'exécution
d'une requête... mais sans la durée de la connexion de PHP à la base
MySQL.
La doc MySQL précise que toutes les fonctions CurDate et autres sont
évaluées une seule fois au début de l'exécution, donc pas moyen
d'utiliser ça.
Si tu attaques MySQL avec un connexion permanente, le temps de connexion ne
devrait pas être pris en compte. Me trompes-je ?
Par ailleurs, phpMyAdmin donne des durées de requêtes. Savez-vous
comment elles sont mesurées ?
Très bonne question que tu aurais dû te poser plus tôt. :) A laquelle je
répondrais ... Regardes le code.
Sur un site en PHP/MySQL, je cherche à mesurer la durée d'exécution d'une requête... mais sans la durée de la connexion de PHP à la base MySQL.
La doc MySQL précise que toutes les fonctions CurDate et autres sont évaluées une seule fois au début de l'exécution, donc pas moyen d'utiliser ça.
Si tu attaques MySQL avec un connexion permanente, le temps de connexion ne devrait pas être pris en compte. Me trompes-je ?
Par ailleurs, phpMyAdmin donne des durées de requêtes. Savez-vous comment elles sont mesurées ?
Très bonne question que tu aurais dû te poser plus tôt. :) A laquelle je répondrais ... Regardes le code.
@++
Stéphane
Antoine Dinimant a écrit:
Bonjour,
Sur un site en PHP/MySQL, je cherche à mesurer la durée d'exécution d'une requête... mais sans la durée de la connexion de PHP à la base MySQL.
voyez-vous ce qui cloche ?
Non, je ne vois pas.
avez-vous de meilleures idées ?
Oui, essaye avec MySQL controle que tu trouves sur mysql.com ou DBdesigner J'ai fait quelques tests, le deux donnent le même résultat à la différence que DBDesigner indique 3 chiffres après la virgule tandis que MySQL Controle en donne 2.
-- Stéphane La souplesse d'esprit permet de s'adapter dans toutes circonstances.
http://www.velo-passion.com pour les fans de vélo http://www.lorimier.com/chemin-des-cretes-du-jura une ballade à pied d'une semaine à 2 http://www.baby-boum.ch l'enfant n'est-il pas l'avenir de l'homme?
Antoine Dinimant a écrit:
Bonjour,
Sur un site en PHP/MySQL, je cherche à mesurer la durée d'exécution
d'une requête... mais sans la durée de la connexion de PHP à la base MySQL.
voyez-vous ce qui cloche ?
Non, je ne vois pas.
avez-vous de meilleures idées ?
Oui, essaye avec MySQL controle que tu trouves sur mysql.com ou DBdesigner
J'ai fait quelques tests, le deux donnent le même résultat à la différence que DBDesigner indique 3 chiffres après la
virgule tandis que MySQL Controle en donne 2.
--
Stéphane
La souplesse d'esprit permet de s'adapter dans toutes circonstances.
http://www.velo-passion.com pour les fans de vélo
http://www.lorimier.com/chemin-des-cretes-du-jura une ballade à pied d'une semaine à 2
http://www.baby-boum.ch l'enfant n'est-il pas l'avenir de l'homme?
Sur un site en PHP/MySQL, je cherche à mesurer la durée d'exécution d'une requête... mais sans la durée de la connexion de PHP à la base MySQL.
voyez-vous ce qui cloche ?
Non, je ne vois pas.
avez-vous de meilleures idées ?
Oui, essaye avec MySQL controle que tu trouves sur mysql.com ou DBdesigner J'ai fait quelques tests, le deux donnent le même résultat à la différence que DBDesigner indique 3 chiffres après la virgule tandis que MySQL Controle en donne 2.
-- Stéphane La souplesse d'esprit permet de s'adapter dans toutes circonstances.
http://www.velo-passion.com pour les fans de vélo http://www.lorimier.com/chemin-des-cretes-du-jura une ballade à pied d'une semaine à 2 http://www.baby-boum.ch l'enfant n'est-il pas l'avenir de l'homme?
Vincent Courcelle
cherche getmicrotime() sur php.net (intégralité du site) : tu fais un appel avant la requete, un appel après et tu soustrait et sinon tu peux te connecter à mysql en ligne de commande et exécuter ta requète, mysql t'indiquera alors le temps mis pour l'exécution de la requete
Vincent Courcelle, http://www.france-jeunes.net et http://www.tubededentifrice.com (nouvelle version enrichie en silicium)
Prière de joindre le message d'origine à votre réponse.
"Antoine Dinimant" a écrit dans le message de news:
Bonjour,
Sur un site en PHP/MySQL, je cherche à mesurer la durée d'exécution d'une requête... mais sans la durée de la connexion de PHP à la base
MySQL.
La doc MySQL précise que toutes les fonctions CurDate et autres sont évaluées une seule fois au début de l'exécution, donc pas moyen d'utiliser ça.
Faire une première requête d'obtention de la sysdate, lancer la requête à exécuter puis une troisième visant à obtenir à nouveau la sysdate me semble ne faire que multiplier le temps de connexion par trois, alors que je cherche à l'éliminer ?
La solution sur laquelle je suis en ce moment consiste à faire un "tarage" de mes durée. Je mesure la durée d'une requête minimale "SELECT 1", y compris l'aller-retour entre PHP et MySQL, et cela me donne ma tare.
Je mesure ensuite la durée de ma requête, toujours aller-retour PHP/MySQL compris. Le temps d'exécution "pur" serait donc durée_requête - tare.
Ce n'est pas très propre et les résultats le sont encore moins. Le pb est que les durées sont très aléatoires, et qu'il arrive fréquemment que la tare soit supérieure à la durée de la requête... j'essaie de lisser tout cela en faisant une moyenne sur 100 exécutions de chaque requête, et cela améliore un peu les choses, mais pas énormément...
voyez-vous ce qui cloche ? avez-vous de meilleures idées ?
Par ailleurs, phpMyAdmin donne des durées de requêtes. Savez-vous comment elles sont mesurées ?
cherche getmicrotime() sur php.net (intégralité du site) : tu fais un appel
avant la requete, un appel après et tu soustrait
et sinon tu peux te connecter à mysql en ligne de commande et exécuter ta
requète, mysql t'indiquera alors le temps mis pour l'exécution de la requete
Vincent Courcelle,
http://www.france-jeunes.net
et http://www.tubededentifrice.com (nouvelle version enrichie en silicium)
Prière de joindre le message d'origine à votre réponse.
"Antoine Dinimant" <antoun@free.fr> a écrit dans le message de
news:40A7C5D5.5050606@free.fr...
Bonjour,
Sur un site en PHP/MySQL, je cherche à mesurer la durée d'exécution
d'une requête... mais sans la durée de la connexion de PHP à la base
MySQL.
La doc MySQL précise que toutes les fonctions CurDate et autres sont
évaluées une seule fois au début de l'exécution, donc pas moyen
d'utiliser ça.
Faire une première requête d'obtention de la sysdate, lancer la requête
à exécuter puis une troisième visant à obtenir à nouveau la sysdate me
semble ne faire que multiplier le temps de connexion par trois, alors
que je cherche à l'éliminer ?
La solution sur laquelle je suis en ce moment consiste à faire un
"tarage" de mes durée. Je mesure la durée d'une requête minimale "SELECT
1", y compris l'aller-retour entre PHP et MySQL, et cela me donne ma tare.
Je mesure ensuite la durée de ma requête, toujours aller-retour
PHP/MySQL compris. Le temps d'exécution "pur" serait donc
durée_requête - tare.
Ce n'est pas très propre et les résultats le sont encore moins. Le pb
est que les durées sont très aléatoires, et qu'il arrive
fréquemment que la tare soit supérieure à la durée de la requête...
j'essaie de lisser tout cela en faisant une moyenne sur 100 exécutions
de chaque requête, et cela améliore un peu les choses, mais pas
énormément...
voyez-vous ce qui cloche ? avez-vous de meilleures idées ?
Par ailleurs, phpMyAdmin donne des durées de requêtes. Savez-vous
comment elles sont mesurées ?
cherche getmicrotime() sur php.net (intégralité du site) : tu fais un appel avant la requete, un appel après et tu soustrait et sinon tu peux te connecter à mysql en ligne de commande et exécuter ta requète, mysql t'indiquera alors le temps mis pour l'exécution de la requete
Vincent Courcelle, http://www.france-jeunes.net et http://www.tubededentifrice.com (nouvelle version enrichie en silicium)
Prière de joindre le message d'origine à votre réponse.
"Antoine Dinimant" a écrit dans le message de news:
Bonjour,
Sur un site en PHP/MySQL, je cherche à mesurer la durée d'exécution d'une requête... mais sans la durée de la connexion de PHP à la base
MySQL.
La doc MySQL précise que toutes les fonctions CurDate et autres sont évaluées une seule fois au début de l'exécution, donc pas moyen d'utiliser ça.
Faire une première requête d'obtention de la sysdate, lancer la requête à exécuter puis une troisième visant à obtenir à nouveau la sysdate me semble ne faire que multiplier le temps de connexion par trois, alors que je cherche à l'éliminer ?
La solution sur laquelle je suis en ce moment consiste à faire un "tarage" de mes durée. Je mesure la durée d'une requête minimale "SELECT 1", y compris l'aller-retour entre PHP et MySQL, et cela me donne ma tare.
Je mesure ensuite la durée de ma requête, toujours aller-retour PHP/MySQL compris. Le temps d'exécution "pur" serait donc durée_requête - tare.
Ce n'est pas très propre et les résultats le sont encore moins. Le pb est que les durées sont très aléatoires, et qu'il arrive fréquemment que la tare soit supérieure à la durée de la requête... j'essaie de lisser tout cela en faisant une moyenne sur 100 exécutions de chaque requête, et cela améliore un peu les choses, mais pas énormément...
voyez-vous ce qui cloche ? avez-vous de meilleures idées ?
Par ailleurs, phpMyAdmin donne des durées de requêtes. Savez-vous comment elles sont mesurées ?
Antoine Dinimant
Si tu attaques MySQL avec un connexion permanente, le temps de connexion ne devrait pas être pris en compte. Me trompes-je ?
a priori, ça ne change rien : je fais dans l'ordre :
Donc le temps d'établir la connexion n'est pas pris en compte... seulement le temps d'envoyer la requête à MySQL et celui de récupérer le résultat
Par ailleurs, phpMyAdmin donne des durées de requêtes. Savez-vous comment elles sont mesurées ?
Très bonne question que tu aurais dû te poser plus tôt. :) A laquelle je répondrais ... Regardes le code.
Tu as raison, j'ai pris mon courage à deux mains et ma souris dans l'autre... après dix minutes de recherche dans le code source, phpMyAdmin fait exactement la même chose, c'est PHP qui mesure le temps de tout l'aller-retour !
Bon, peut-être que je cherche vraiment la petite bête ?
Si tu attaques MySQL avec un connexion permanente, le temps de connexion ne
devrait pas être pris en compte. Me trompes-je ?
a priori, ça ne change rien : je fais dans l'ordre :
Donc le temps d'établir la connexion n'est pas pris en compte...
seulement le temps d'envoyer la requête à MySQL et celui de récupérer le
résultat
Par ailleurs, phpMyAdmin donne des durées de requêtes. Savez-vous
comment elles sont mesurées ?
Très bonne question que tu aurais dû te poser plus tôt. :) A laquelle je
répondrais ... Regardes le code.
Tu as raison, j'ai pris mon courage à deux mains et ma souris dans
l'autre... après dix minutes de recherche dans le code source,
phpMyAdmin fait exactement la même chose, c'est PHP qui mesure le temps
de tout l'aller-retour !
Bon, peut-être que je cherche vraiment la petite bête ?
Donc le temps d'établir la connexion n'est pas pris en compte... seulement le temps d'envoyer la requête à MySQL et celui de récupérer le résultat
Par ailleurs, phpMyAdmin donne des durées de requêtes. Savez-vous comment elles sont mesurées ?
Très bonne question que tu aurais dû te poser plus tôt. :) A laquelle je répondrais ... Regardes le code.
Tu as raison, j'ai pris mon courage à deux mains et ma souris dans l'autre... après dix minutes de recherche dans le code source, phpMyAdmin fait exactement la même chose, c'est PHP qui mesure le temps de tout l'aller-retour !
Bon, peut-être que je cherche vraiment la petite bête ?
Antoine Dinimant
Vincent Courcelle a écrit:
cherche getmicrotime() sur php.net (intégralité du site) : tu fais un appel avant la requete, un appel après et tu soustrait
c'est ce que je fais, mais il me semble que ça introduit un biais... cf mes différents posts plus hauts dans ce thread
et sinon tu peux te connecter à mysql en ligne de commande et exécuter ta requète, mysql t'indiquera alors le temps mis pour l'exécution de la requete
concrètement, je fais comment ? sachant que je parle d'un site et d'une base hébergée sur Free ? (mais même si ce n'est possible, que sur ma base locale EasyPHO, j'aimerai bien connaître les commandes en question)
Vincent Courcelle a écrit:
cherche getmicrotime() sur php.net (intégralité du site) : tu fais un appel
avant la requete, un appel après et tu soustrait
c'est ce que je fais, mais il me semble que ça introduit un biais... cf
mes différents posts plus hauts dans ce thread
et sinon tu peux te connecter à mysql en ligne de commande et exécuter ta
requète, mysql t'indiquera alors le temps mis pour l'exécution de la requete
concrètement, je fais comment ? sachant que je parle d'un site et d'une
base hébergée sur Free ? (mais même si ce n'est possible, que sur ma
base locale EasyPHO, j'aimerai bien connaître les commandes en question)
cherche getmicrotime() sur php.net (intégralité du site) : tu fais un appel avant la requete, un appel après et tu soustrait
c'est ce que je fais, mais il me semble que ça introduit un biais... cf mes différents posts plus hauts dans ce thread
et sinon tu peux te connecter à mysql en ligne de commande et exécuter ta requète, mysql t'indiquera alors le temps mis pour l'exécution de la requete
concrètement, je fais comment ? sachant que je parle d'un site et d'une base hébergée sur Free ? (mais même si ce n'est possible, que sur ma base locale EasyPHO, j'aimerai bien connaître les commandes en question)