par
damien_55 » 04 févr. 2014, 13:28
bonjour a tous,
j'ai un page php comme ceci:
require 'class/class.cache.php';
define('ROOT', dirname(__FILE__));
$Cache = new Cache(ROOT.'/tmp',60);
if(!$Cache->start('MonsuperCache')){
$page = mysql_fetch_array(mysql_query("SELECT id, name, description, longDescription, manufacturer, price, terms, shippinghandling, validFrom, validTo, smallImage, largeImage, currencyCode, extra1, mid_place, extra2, extra3, merchantCategory, deepLink, extra1, lat, lng
FROM event_sale
WHERE event_sale.id='".addslashes($_GET['id'])."'
LIMIT 1"));
}
$Cache->end();
et ma classe cache.class.php
class Cache{
public $dirname;
public $duration;
public $buffer;
public function __construct($dirname, $duration){
$this->dirname = $dirname;
$this->duration = $duration;
}
public function write($filename, $content){
return file_put_contents($this->dirname.'/'.$filename, serialize($content));
}
public function read($filename){
$file = $this->dirname.'/'.$filename;
if(!file_exists($file)){
return false;
}
$lifetime = (time - filemtime($file)) / 60;
if ($lifetime > $this->duration){
return false;
}
return file_get_contents(unserialize($file));
}
public function delete($filename){
$file = $this->dirname.'/'.$filename;
if(file_exists($file)){
unlink($file);
}
}
public function clear(){
$files =glob($this->dirname.'/*');
foreach( $files as $file){
unlink($file);
}
}
public function start($cachename){
if($content = $this->read($cachename)){
echo unserialize($content);
$this->buffer = false;
return true;
}
ob_start();
$this->buffer = $cachename;
}
public function end(){
if(!$this->buffer){
return false;
}
$content = ob_get_clean();
echo $content;
$this->write($this->buffer, serialize($content));
}
}
Résultat dans mon fichier 'Monsupercache: s:7:"s:0:"";";
si dans ma page je remplace ma requete mysql par une variable comme $variable='ici tout va bien'; et je retire les serialize et unserialize cela fonctionne parfaitement parfaitement.
Merci de votre aide.
bonjour a tous,
j'ai un page php comme ceci:
[php]require 'class/class.cache.php';
define('ROOT', dirname(__FILE__));
$Cache = new Cache(ROOT.'/tmp',60);
if(!$Cache->start('MonsuperCache')){
$page = mysql_fetch_array(mysql_query("SELECT id, name, description, longDescription, manufacturer, price, terms, shippinghandling, validFrom, validTo, smallImage, largeImage, currencyCode, extra1, mid_place, extra2, extra3, merchantCategory, deepLink, extra1, lat, lng
FROM event_sale
WHERE event_sale.id='".addslashes($_GET['id'])."'
LIMIT 1"));
}
$Cache->end();
[/php]
et ma classe cache.class.php
[php]class Cache{
public $dirname;
public $duration;
public $buffer;
public function __construct($dirname, $duration){
$this->dirname = $dirname;
$this->duration = $duration;
}
public function write($filename, $content){
return file_put_contents($this->dirname.'/'.$filename, serialize($content));
}
public function read($filename){
$file = $this->dirname.'/'.$filename;
if(!file_exists($file)){
return false;
}
$lifetime = (time - filemtime($file)) / 60;
if ($lifetime > $this->duration){
return false;
}
return file_get_contents(unserialize($file));
}
public function delete($filename){
$file = $this->dirname.'/'.$filename;
if(file_exists($file)){
unlink($file);
}
}
public function clear(){
$files =glob($this->dirname.'/*');
foreach( $files as $file){
unlink($file);
}
}
public function start($cachename){
if($content = $this->read($cachename)){
echo unserialize($content);
$this->buffer = false;
return true;
}
ob_start();
$this->buffer = $cachename;
}
public function end(){
if(!$this->buffer){
return false;
}
$content = ob_get_clean();
echo $content;
$this->write($this->buffer, serialize($content));
}
}[/php]
Résultat dans mon fichier 'Monsupercache: s:7:"s:0:"";";
si dans ma page je remplace ma requete mysql par une variable comme $variable='ici tout va bien'; et je retire les serialize et unserialize cela fonctionne parfaitement parfaitement.
Merci de votre aide.