Améliorer vos temps de requête MySQL dans votre script PHP augmente votre vitesse de navigation et empêche temps scripts outs de se produire. PHP est un langage de script avec des fonctionnalités pour vous aider à créer des pages web dynamiques. MySQL est un système de gestion de base de données relationnelle qui permet à plusieurs utilisateurs d'accéder à des bases de données sur un serveur. Enquêter sur la cause de requêtes lentes avec l'énoncé «expliquer» , permettant le journal des requêtes lentes et chronométrer vos requêtes esprit la fonction " microtime " . En utilisant l'extension PDO MYSQL et mettre à jour votre version de MySQL PHP et peut également aider à accélérer les requêtes. Instructions
1
Mettez à jour votre PHP et MySQL pour les dernières versions de leurs sites Web. Les anciennes versions entrent parfois en conflit les uns avec les autres tandis que les versions plus récentes disposent des corrections de bugs et sont plus susceptibles d' être compatibles les uns avec les autres .
2
Ouvrez votre fichier " my.cnf " de MySQL dans un éditeur de texte tel que Windows Bloc-notes. Recherchez et sélectionnez l'option " log_slow_queries " sur "ON " au lieu de "OFF". Réglez le " long_query_time " à un petit nombre , comme "1" et notez le répertoire " log-slow -queries " . Recharger votre service MySQL . Le "mysql - slow.log " va maintenant afficher les requêtes qui prennent beaucoup de temps à s'exécuter. Cela vous aidera à identifier à quelle fréquence votre requête s'exécute lentement .
3
place la déclaration «expliquer» dans votre requête avant une déclaration "SELECT" pour récupérer les informations de l'optimiseur sur la façon dont votre requête sera exécutée. Le résultat obtenu peut révéler la cause de votre requête lente, comme un index manquant
4
Time votre requête PHP avec la fonction " microtime " en ajoutant le code suivant où votre requête se trouve: .
$ TIME_BEG = microtime (true);
//placez votre requête ici
$ TIME_END = microtime (true);
$ time_res = TIME_END $ - $ time_start ;
echo " la requête a pris $ time_res secondes " ;
Cela permet de confirmer que la requête est la partie lente et pas une autre partie de votre code. Exécutez le code plusieurs fois jusqu'à ce que vous avez un temps constant. Comparez cette valeur de temps lorsque vous apportez des modifications futures de chronométrage
5
Vérifier les erreurs avec la fonction " mysql_error " en ajoutant le code suivant où votre requête se trouve: .
$ result = mysql_query ( $ query ) ;
si {
$ msg = 'Erreur requête:' de mysql_error () ($ result !) . . "\\ n" ; die
( $ msg )
}
6
utiliser l'extension PDO_MYSQL PHP pour interroger votre base de données au lieu de " mysql_query " standard ou fonctions " mysqli ". L'extension utilise PDO_MYSQL soutien de déclaration préparée natif de MySQL , qui peut aider à accélérer vos requêtes. Le code suivant est un exemple de comment envoyer une requête MySQL avec l'extension PDO_MYSQL :
$ db_info = ' mysql : host = localhost ; port = 3306 ; dbname = mydb ';
$ user = 'username' ;
$ pass = 'password' ;
try {
$ db_handle = new PDO ($ db_info , $ user, $ pass ) ;
}
catch ( PDOException $ exception) {
printf ( "Erreur: % s ", $ exception -> getMessage ());
}
$ db_handle -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION ) ;
$ db_handle -> setAttribute ( PDO :: PDO_ATTR_AUTOCOMMIT , false);
< p> $ sql = "SELECT * FROM ma_table " ;
$ result_set = $ db_handle -> query ( $ sql ) ;
$ result_set -> setFetchMode ( PDO :: FETCH_ASSOC ) ;
while ($ row = $ result_set - > fetch ()) {
$ data = $ row [" mycolumn "] ; }
< p> $ result_set -> closeCursor ();