26-04-2009, 04:43 PM
Bijour,
Voilà étant entrain de coder ma class SQL en POO, j'ai esseyé de faire un système de cache pour mes resultats de requetes.
Ca marche bien, même très bien, mais la je me pose une question existantiel. Elle va me servire a quoi cette fonction ?
Voila je m'explique :
Ma fonction permet de mettre dans fichier cache (.cache-X.ini), ou X est le numero de la requete, le retour de la requete. Je lui donne aussi un temps ou le fichier en question est toujours valide. Bah oui, au bout d'un moment les valeur changes...
Tous cela fonction très bien, mais c'est l'utilité de la chose qui me reste a expliquer. Parce que voilà elle sert pas en grand chose.
Parce que accouplé avec un système de cache classique pour un site web, cela ne sert pas a grands chose, en tous cas dans un site classique, mais pour un jeu web, cela peut prendre tous son sens...
Voila la fonction en question :
Voilà étant entrain de coder ma class SQL en POO, j'ai esseyé de faire un système de cache pour mes resultats de requetes.
Ca marche bien, même très bien, mais la je me pose une question existantiel. Elle va me servire a quoi cette fonction ?
Voila je m'explique :
Ma fonction permet de mettre dans fichier cache (.cache-X.ini), ou X est le numero de la requete, le retour de la requete. Je lui donne aussi un temps ou le fichier en question est toujours valide. Bah oui, au bout d'un moment les valeur changes...
Tous cela fonction très bien, mais c'est l'utilité de la chose qui me reste a expliquer. Parce que voilà elle sert pas en grand chose.
Parce que accouplé avec un système de cache classique pour un site web, cela ne sert pas a grands chose, en tous cas dans un site classique, mais pour un jeu web, cela peut prendre tous son sens...
Voila la fonction en question :
Code PHP :
<?php
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public function select_cache ($requete, $array=0, $time_expire=3600, $file='INCONNU', $line='INCONNU') // OP
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{
if (is_file ('.cache-'.$this->nb_requete.'.ini'))
{
$time_exp = time()- filemtime('.cache-'.$this->nb_requete.'.ini');
}
else
{
$time_exp = $time_expire;
}
if ($time_exp > $time_expire)
{
$retour_query = mysql_query ($requete);
if (!$retour_query)
{
$errno = mysql_errno($this->connection);
$error = mysql_error($this->connection);
$this->get_error($file, $line, $errno, $error, $requete);
}
$array_select = array();
while ($requete = mysql_fetch_assoc ($retour_query))
{
$array_select[]=$requete;
}
$this->requete[$array] = $array_select;
$requete = serialize ($array_select);
$new_file = $requete;
file_put_contents('.cache-'.$this->nb_requete.'.ini', $new_file);
}
elseif ($time_exp < $time_expire)
{
$old_file = file_get_contents ('.cache-'.$this->nb_requete.'.ini');
$unserial = unserialize ($old_file);
$this->requete[$array] = $unserial;
}
else
{
$retour_query = mysql_query ($requete);
if (!$retour_query)
{
$errno = mysql_errno($this->connection);
$error = mysql_error($this->connection);
$this->get_error($file, $line, $errno, $error, $requete);
}
$array_select = array();
while ($requete = mysql_fetch_assoc ($retour_query))
{
$array_select[]=$requete;
}
$this->requete[$array] = $array_select;
$requete = serialize ($array_select);
$new_file = $requete;
file_put_contents('.cache-'.$this->nb_requete.'.ini', $new_file);
}
$this->nb_requete++;
}
Et le bout de code qui l'appel :
Code PHP :
<?php
$sql->select_cache('SELECT * FROM NBA_EQUIPE', 'NBA', 3600, __FILE__, __LINE__);
?>