La mise en cache des fichiers PHP est principalement utilisée pour réduire la pression sur le serveur de base de données. La mise en cache statique des fichiers PHP mentionnée ici fait référence à des fichiers texte statiques, générant directement des fichiers texte tels que HTML ou XML, et les régénérant en cas de mises à jour, ce qui est le cas. adapté aux applications qui ne changent pas beaucoup de page.
1. Cache de fichiers statique
2. Memcache, cache redis
Cache statique : utilisez php pour assembler les données, puis écrivez les données dans le fichier.
staticcache.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <?php
class File{
private $_dir ;
const EXT = '.txt';
public function __construct(){
$this ->_dir = dirname( __FILE__ ).'/files/';
}
public function cacheData( $key , $value = '', $path = ''){
$filename = $this ->_dir. $path . $key .self::EXT;
if ( $value !== ''){
if ( is_null ( $value )){
return @unlink( $filename );
}
$dir = dirname( $filename );
if (! is_dir ( $dir )){
mkdir ( $dir ,0777);
}
return file_put_contents ( $filename , json_encode( $value ));}
if (! is_file ( $filename )){
return FALSE;
} else {
return json_decode( file_get_contents ( $filename ),true);
}
}
}
|
Copier après la connexion
test.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php
require_once ('./staticcache.php');
$data = array (
'id' => 1,
'name' => 'panda',
'number' => array (1,7,8)
);
$file = new File();
if ( $file ->cacheData('index_cache')){
var_dump( $file ->cacheData('index_cache')); exit ;
echo "success" ;
} else {
echo "error" ;
}
|
Copier après la connexion
Après avoir défini l'optimisation du temps de cache statique :
cachetime.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <?php
class File{
private $_dir ;
const EXT = '.txt';
public function __construct(){
$this ->_dir = dirname( __FILE__ ).'/files/';
}
public function cacheData( $key , $value = '', $cacheTime = 0){
$filename = $this ->_dir. $key .self::EXT;
if ( $value !== ''){
if ( is_null ( $value )){
return @unlink( $filename );
}
$dir = dirname( $filename );
if (! is_dir ( $dir )){
mkdir ( $dir ,0777);
}
$cacheTime = sprintf('%011d', $cacheTime )
return file_put_contents ( $filename , $cacheTime .json_encode( $value ));
}
if (! is_file ( $filename )){
return FALSE;
}
$contents = file_get_contents ( $filename );
$cacheTime = (int) substr ( $contents ,0,11);
$value = substr ( $contents ,11);
if ( $cacheTime !=0 && ( $cacheTime + fileatime ( $filename )<time())){
unlink( $filename );
return FALSE;
}
return json_decode( $value ,true);
}
}
|
Copier après la connexion
Méthode de cache pour développer l'interface de la page d'accueil
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?php
require_once ('./jsonxml.php');
require_once ('./db.php');
require_once ('./cachetime.php');
$page = isset( $_GET ['page']) ? $_GET ['page'] : 1;
$pageSize = isset( $_GET ['pagesize']) ? $_GET ['pagesize'] : 6;
if (! is_numeric ( $page )||! is_numeric ( $pageSize )){
return Response::show(401,'数据不合法');
}
$offset = ( $page - 1) * $pageSize ;
$sql = "select * from video where status = 1 order by orderby desc limit " . $offset . "," . $pageSize ;
$cache = new File(); $videos = array ();
if (! $videos = $cache ->cacheData('index_yjp_cache'. $page .'-'. $pageSize )){
echo 1; exit ;
try {
$connect = Db::getInstance()->connect();
} catch (Exception $e ){
return Response::show(403,'数据库链接失败');
}
$result = mysql_query( $sql , $connect );
$videos = array ();
while ( $video = mysql_fetch_assoc( $result )){
$videos [] = $video ;
}
if ( $videos ){
$cache ->cacheData('index_yjp_cache'. $page .'-'. $pageSize , $videos ,1200);
}
}
if ( $videos ){
return Response::show(200,'首页数据获取成功', $videos );
} else {
return Response::show(400,'失败', $videos );
}
|
Copier après la connexion
Remarque : le cache de fichiers doit faire attention au délai d'expiration du fichier
1 Obtenez la création du fichier. exemple d'heure :
1 2 | $ctime = filectime ( "chinawinxp.txt" );
echo "创建时间:" . date ( "Y-m-d H:i:s" , $ctime );
|
Copier après la connexion
2. Exemple d'obtention de l'heure de modification d'un fichier :
1 2 | $mtime = filemtime ( "chinawinxp.txt" );
echo "修改时间:" . date ( "Y-m-d H:i:s" , $mtime );
|
Copier après la connexion
la fonction fileatime() renvoie l'heure du dernier accès au fichier spécifié
2.memcache et redis Cache
Activer le service ; port de connexion, serveur de cache ; opération php opération php redis, conditions mencache :
1) Installer l'extension phpredis/mencache
2) php connect redis service connet(127.0.0.1,6379) ;
Se connecter au service mencache connet('memcache_host',11211);
3) définir le cache
4) obtenir obtenir le cache
Définir l'heure du cache : définir la valeur du temps clé (heure)
Le cache PHP comprend le cache de compilation PHP et le cache de données PHP. PHP est un langage interprété qui se compile et s'exécute en même temps. L'avantage de ce mode de fonctionnement est que la modification du programme est très pratique, mais l'efficacité de fonctionnement est très faible. Le cache de compilation PHP a été amélioré pour faire face à cette situation, afin que le langage PHP puisse mettre en cache les résultats de compilation du programme tant qu'il est exécuté une seule fois. De cette façon, chaque exécution ultérieure n'a pas besoin d'être recompilée, ce qui améliore considérablement la vitesse d'exécution de PHP.
Recommandations associées :
Code d'implémentation du cache statique PHP pour améliorer la vitesse d'accès au site Web
Problème de mise à jour du cache statique ThinkPHP
Analyse de l'utilisation du cache statique thinkphp, tutoriel thinkphp static cache_PHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!