Stocker globalement toutes les requetes passées
#3488
Closed
opened 8 years ago by nicod_
·
9 comments
No Branch/Tag Specified
1.8
1.9.1
1.9.2
2.0
2.1
3.0
3.1
3.2
4.0
4.1
4.2
boutons-danger
coquille_doc
debug_ecrire_fichier
dev-sortable
dev/autoloader
dev/hasard_fixe
dev/instituer_ergo
dev/issue_5447_exporter_csv
dev_infos_image
fix/valider_url_distante
fix_issue_5454
fix_modifier_login
issue_4101
issue_4678
issue_4705
issue_4717
issue_4836
issue_4946
issue_5258
issue_5344
issue_5427_bis
master
v1.8.3+b
v1.9.1+i
v1.9.2+f
v1.9.2+g
v1.9.2+h
v1.9.2+i
v1.9.2+j
v1.9.2+k
v1.9.2+m
v1.9.2+n
v1.9.2+o
v1.9.2+p
v2.0.0
v2.0.1
v2.0.10
v2.0.11
v2.0.12
v2.0.13
v2.0.14
v2.0.15
v2.0.16
v2.0.17
v2.0.18
v2.0.19
v2.0.2
v2.0.20
v2.0.21
v2.0.22
v2.0.23
v2.0.24
v2.0.25
v2.0.26
v2.0.3
v2.0.5
v2.0.6
v2.0.7
v2.0.8
v2.0.9
v2.1.0
v2.1.1
v2.1.10
v2.1.11
v2.1.12
v2.1.13
v2.1.14
v2.1.15
v2.1.16
v2.1.17
v2.1.18
v2.1.19
v2.1.2
v2.1.20
v2.1.21
v2.1.22
v2.1.23
v2.1.24
v2.1.25
v2.1.26
v2.1.27
v2.1.28
v2.1.29
v2.1.3
v2.1.30
v2.1.4
v2.1.5
v2.1.6
v2.1.7
v2.1.8
v2.1.9
v3.0.0
v3.0.0-alpha.1
v3.0.0-beta
v3.0.0-beta.2
v3.0.0-rc
v3.0.1
v3.0.10
v3.0.11
v3.0.12
v3.0.13
v3.0.14
v3.0.15
v3.0.16
v3.0.17
v3.0.18
v3.0.19
v3.0.2
v3.0.20
v3.0.21
v3.0.22
v3.0.23
v3.0.24
v3.0.25
v3.0.26
v3.0.27
v3.0.28
v3.0.3
v3.0.4
v3.0.5
v3.0.6
v3.0.7
v3.0.8
v3.0.9
v3.1.0
v3.1.0-alpha
v3.1.0-beta
v3.1.0-rc
v3.1.0-rc.2
v3.1.0-rc.3
v3.1.1
v3.1.10
v3.1.11
v3.1.12
v3.1.13
v3.1.14
v3.1.15
v3.1.2
v3.1.3
v3.1.4
v3.1.5
v3.1.6
v3.1.7
v3.1.8
v3.1.9
v3.2-alpha.1
v3.2.0
v3.2.0-alpha.1
v3.2.0-beta
v3.2.0-beta.2
v3.2.0-beta.3
v3.2.1
v3.2.10
v3.2.11
v3.2.12
v3.2.13
v3.2.14
v3.2.15
v3.2.16
v3.2.17
v3.2.2
v3.2.3
v3.2.4
v3.2.5
v3.2.6
v3.2.7
v3.2.8
v3.2.9
v4.0.0
v4.0.0-alpha
v4.0.0-beta
v4.0.1
v4.0.2
v4.0.3
v4.0.4
v4.0.5
v4.0.6
v4.0.7
v4.0.8
v4.0.9
v4.1.0
v4.1.0-alpha
v4.1.0-beta
v4.1.0-rc
v4.1.1
v4.1.2
v4.1.3
v4.1.4
v4.1.5
v4.1.6
v4.1.7
v4.2.0-alpha
v4.2.0-alpha2
Labels
Amélioration, nouvelle fonctionnalité APIs authentification base de données bug
Ca ne fonctionne pas code généré compilo css divers documentation doublon
Ce ticket est un doublon ergonomie espace privé filtres et balises formulaires Inscription installation invalide
Ticket invalide javascript langues LDAP plugin PostgreSQL refusé
Ignoré, c'est comme Ca... sécurité traduction
Apply labels
Clear labels
accessibilité
amélioration
Amélioration, nouvelle fonctionnalité APIs authentification base de données bug
Ca ne fonctionne pas code généré compilo css divers documentation doublon
Ce ticket est un doublon ergonomie espace privé filtres et balises formulaires Inscription installation invalide
Ticket invalide javascript langues LDAP plugin PostgreSQL refusé
Ignoré, c'est comme Ca... sécurité traduction
No Label
accessibilité
amélioration
APIs
authentification
base de données
bug
code généré
compilo
css
divers
documentation
doublon
ergonomie
espace privé
filtres et balises
formulaires
Inscription
installation
invalide
javascript
langues
LDAP
plugin
PostgreSQL
refusé
sécurité
traduction
Milestone
Set milestone
Clear milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
Assign users
Clear assignees
No Assignees
6 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.
No due date set.
Dependencies
This issue currently doesn't have any dependencies.
Reference in new issue
There is no content yet.
Delete Branch '%!s(MISSING)'
Deleting a branch is permanent. It CANNOT be undone. Continue?
No
Yes
Suite au oups de ce commit :
https://core.spip.net/projects/spip/repository/revisions/22276
vous avez pu voir que j'ajoute dans une globale toutes les requêtes effectuées.
Pour éviter une nouvelle boulette j'ai forké chez moi req/mysql.php en req/mysqldebug.php (connecteur perso).
Cette globale avec toutes les requetes me permet d'afficher sur toutes les pages (public et privé) un petit bandeau avec le nombre de requêtes effectuées et d'autres infos.

Ce nombre de requêtes affiché me sert à optimiser plus rapidement des squelettes, sans passer par profil ou debug. Ou à vérifier que des pages se mettent bien en cache.
Exemple :
Est ce que ça vous parait intéressant ?
Ciao
ça pourrait être pas mal dans le var_mode debug ou var_profile, non ?
Justement non :)
Actuellement, les requetes sont stockées uniquement si on a un var_profile en GET.
var_profile c'est bien, c'est très complet pour debugger finement, mais il faut ajouter le paramètre à l'url (même si avec le minibando c'est plus rapide).
Ma modif consiste juste a stocker toutes les requetes en global.
Ensuite je me suis inspiré du plugin dev, je passe par register_shutdown_function() pour ajouter ce bandeau sur toutes les pages, sans ajouter var_profile à l'url.
C'est plus rapide, je l'ai tout le temps sous les yeux quand je suis connecté et webmestre (privé et public).
Pour les appels en Ajax, je logge ces infos au lieu de les afficher pour pouvoir les lire aussi si besoin (vérifier le nombre de requetes générées).
Pour être complet, en fait j'affiche aussi le temps de génération de la page :

ça me permet aussi de tester certaines optimisations.
(et la croix me sert à masquer le bandeau si jamais il y a du texte en dessous)
Possible que ça n'intéresse que moi, mais Fil sur IRC paraissait intéressé aussi, du coup je pose ça là.
"Voilà ma chanson mon pote. Si t'en veux pas, pas d' malaise. Je la remet dans ma culotte."
Et pourquoi pas dans le plugin dev? qui fait déjà un début de cela?
Ça me semble un outil simple et pratique qui me servirait sans aucun doute. Dans le plugin dev ce serait génial...
Même avis que kent1 => plugin dev :)
Ça semble bien pour le plugin dev, mais du coup il faut ajouter un compteur de requêtes en global dans req/mysql (et dans req/sqlite), par exemple :
function spip_mysql_query($query, $serveur='',$requeter=true) {
...
$GLOBALS['compteur_requetes']++;
...
}
Moi j'ai ça dans mon code en local, mais dans le code dist ça fait pas un peu crado ?
Je vois pas où insérer ce compteur sinon.
Et pour afficher le temps de calcul de la page, il faut stocker le microtime dès le démarrage.
Moi je le mets dans mes_options au tout début : $GLOBALS['_start'] = microtime(true);
Une meilleure idée pour que ce soit plus générique ?
un compteur global de requêtes, optionnel ou non ça parait pas mal, car a contrario stocker toutes les requêtes peut vite être lourd.
J'ai vu des sites avec plus de 2000 requete sur une page, et ça alourdirait inutilement la conso mémoire.
Sinon je pense aussi qu'ajouter ton petit bandeau dans le plugin dev serait une bonne idée
J'ai ajouté un simple compteur sur chaque connexion :
http://core.spip.org/projects/spip/repository/revisions/22332
et j'ai modifié le bandeau du plugin dev en conséquence :
http://zone.spip.org/trac/spip-zone/changeset/91040
Il s'affiche maintenant sur le public aussi, mais uniquement pour les webmestres.
Je ferme, donc.
Statut changé à Fermé