Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Accélerer vos sites en PHP

Compatible PHP. Cliquer pour en savoir plus sur les compatibilités.Par Qwix, le 13 août 2005

Pourquoi accélerer vos sites en PHP ?

Tout simplement parce que les utilisateurs n'aiment pas attendre, et s'ils attendent trop longtemps, vous serez pénalisé et perdrez des visiteurs.

Fonctions utilisées

Pour réaliser ce tutorial, vous aurez besoin des fonction PHP suivantes:

  • fopen
  • fputs
  • fclose
  • implode
  • mysql_connect
  • mysql_fetch_array
  • mysql_query
  • mysql_select_db
  • serialize
  • unserialize

Dans quels cas utiliser cette méthode ?

IL est pratique d'utiliser cette méthode pour récupérer des données qui ne sont pas très souvent mises à jour, comme un menu pour un site de e-commerce, par exemple, ou alors un système de news qui n'est mis à jour qu'une fois par semaine…. Bref lorsque des données sont relativement statiques, ou peu voire pas mises à jour. Il serait tout de même dommage d'utiliser les ressources du serveur MYSQL pour des données que l'on peut récupérer autrement. La méthode consiste donc à utiliser des données provenant d'un fichier texte, plutôt que d'une base de données MYSQL, car l'accès à un fichier est beaucoup plus rapide qu'un accès à une base de données.

Il faut noter que cette méthode n'est efficace que pour un site ou le serveur MYSQL est vite encombré, et si ce même site n'est pas énormément visité, car l'accès au fichier texte est limité :?

Insérer les données

Admettons que vous avez créé une interface d'administration de votre site. Vous décidez de mettre des données à jour. Dans notre cas nous allons parler d'un site de e-commerce, vous avez donc une base de données 'PRODUITS' qui contient la table suivante:

# Structure de la table categories
CREATE TABLE categories (
  id_categorie int(10) NOT NULL AUTO_INCREMENT,
  nom_categorie varchar(20) NOT NULL DEFAULT '',
  description_categorie text NOT NULL,
  PRIMARY KEY  (id_categorie)
)
 
# Contenu de la table categories
INSERT INTO categories VALUES (1, 'hi-fi', 'categories hi-fi');
INSERT INTO categories VALUES (2, 'vidéo', 'catégorie vidéo');

Vous insérez donc un nouvel enregistrement dans votre base, vous avez donc une requête INSERT INTO…. Maintenant que vous avez inséré les données, il nous faut créer un fichier texte où nous allons stocker toutes les informations utiles. Voici le script:

<?php
	//variable contenant le nom du fichier, qui va contenir les informations:
	$fichier  = 'le_fichier.txt'; 
 
    //connection au serveur:
	$cnx = mysql_connect('serveur','utilisateur','mot_de_passe') or die (mysql_error());
 
	//sélection de la base de données:
    $db = mysql_select_db('PRODUITS') or die (mysql_error());
 
	//requête SQL, on sélectionne toutes les informations:
    $query = "SELECT * FROM categories";
 
	//excution de la requête:
    $result = mysql_query($query) or die (mysql_error());
 
	//stockage des résultat de cette requête dans un tableau associatif:
    while ($record = mysql_fetch_array($result, MYSQL_ASSOC))
	{ 
        $records[] = $record;
    } 
 
    //ouverture de notre fichier texte, avec des droits d'écriture:
	$fp = fopen($fichier,"w");
 
	//insertion des données 'serializée' dans le fichier
    fputs($fp, serialize($records));
 
	//fermeture du fichier texte:
    fclose($fp);
?>

Et voilà, nous avons maintenant créé un fichier texte contenant les valeurs de chaque champs. Avec les deux enregistrements fournis dans la table 'categorie', vous devriez avoir ceci, dans le fichier texte:

a:2:{i:0;a:3:{s:12:“id_categorie”;s:1:“1”;s:13:“nom_categorie”;s:5:“hi-fi”;s:21:“description_categorie”;s:16:“categories hi-fi”;}i:1;a:3:{s:12:“id_categorie”;s:1:“2”;s:13:“nom_categorie”;s:5:“vidéo”;s:21:“description_categorie”;s:15:“catégorie vidéo”;}}

Ce qui correspond à nos données 'serializée' provenant de notre table.

Récupérer les données Maintenant nous pouvons créer une page où nous allons afficher les données de notre fichier texte. Voici le script à utiliser:

<?php
	//variable contenant le nom du fichier, qui va contenir les informations:
	$fichier  = 'le_fichier.txt'; 
 
	//récupération des données provenant du fichier texte:
	$records = unserialize(implode('',file($fichier)));
 
	//affichage de ces données:
	foreach ($records as $value)
	{ 
	    echo($value['id_categorie']."   ".$value['nom_categorie']."   ".$value['description_categorie']."<br>") ;
	}
?>

Et voilà, nous avons réussi à récupérer les données, sans passer par le serveur MYSQL, ce qui nous a fait gagner beaucoup de temps. :)



Tutorial de Qwix