Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: PHP cache class

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
maragon
Отправлено: 26 Июня, 2012 - 23:10:56
Post Id



Посетитель


Покинул форум
Сообщений всего: 340
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




Накопал в рунете класс, но не вижу работоспособновсти.. что не так? может у кого есть подобное и проще(лучше)?

PHP:
скопировать код в буфер обмена
  1.   <?
  2.   class cacheClass {
  3.         public $cachedir = 'cache/'; // Directory to cache files in (keep outside web root)
  4.         public $cachetime = 0; // Seconds to cache files for
  5.         public $cacheext = 'txt'; // Extension to give cached files (usually cache, htm, txt)
  6.         public $cachefile_created =0;
  7.         public $cachefile ='';
  8.  
  9.         function __construct() {
  10.             $this->cachetime=3600*24;
  11.         }
  12.  
  13.         function start() {
  14.             // Ignore List
  15.             $ignore_list = array("");
  16.  
  17.             // Script
  18.             $page = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; // Requested page
  19.             $this->cachefile = $this->cachedir . md5($page) . '.' . $this->cacheext; // Cache file to either load or create
  20.  
  21.             $ignore_page = false;
  22.             for ($i = 0; $i < count($ignore_list); $i++) {
  23.                 $ignore_page = (strpos($page, $ignore_list[$i]) !== false) ? true : $ignore_page;
  24.             }
  25.  
  26.             $this->cachefile_created = ((@file_exists($this->cachefile))) ? @filemtime($this->cachefile) : 0;
  27.  
  28.             if($ignore_page === true) $this->cachefile_created=-1;
  29.             @clearstatcache();
  30.  
  31.             // Show file from cache if still valid
  32.             if (time() - $this->cachetime < $this->cachefile_created) {
  33.                 ob_start('ob_gzhandler');
  34.                 @readfile($this->cachefile);
  35.                 ob_end_flush();
  36.  
  37.                 exit();
  38.             }
  39.         }
  40.  
  41.         function ag_ob_start() {
  42.             if($this->cachefile_created!=-1) {
  43.  
  44.                 ob_start();
  45.             }
  46.         }
  47.  
  48.         function ag_ob_end() {
  49.             if($this->cachefile_created!=-1) {
  50.  
  51.                 $fp = fopen($this->cachefile, 'w');
  52.  
  53.                 // save the contents of output buffer to the file
  54.                 fwrite($fp, ob_get_contents());
  55.                 fclose($fp);
  56.  
  57.                 ob_end_flush();
  58.             }
  59.         }
  60.  
  61.         function remove_all_cache_file() {
  62.             if ($handle = @opendir($this->cachedir)) {
  63.                 while (false !== ($file = @readdir($handle))) {
  64.                     if ($file != '.' and $file != '..') {
  65.                         echo $file . ' deleted.<br>';
  66.                         @unlink($this->cachedir . '/' . $file);
  67.                     }
  68.                 }
  69.                 @closedir($handle);
  70.             }
  71.         }
  72.                 }
  73.  ?>


Вызываем:
PHP:
скопировать код в буфер обмена
  1.  
  2.     Инклюдим
  3.     $cache =new cacheClass();
  4.     $cache->ag_ob_start();
  5.        ---- content ---
  6.  $cache->ag_ob_end();  
  7.  


-----
https://vk[dot]com/tvoycase_ru - Твой чехол со своим дизайном
 
 Top
caballero
Отправлено: 27 Июня, 2012 - 00:09:24
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




собаки перед функциями поубирай


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
maragon
Отправлено: 27 Июня, 2012 - 06:50:22
Post Id



Посетитель


Покинул форум
Сообщений всего: 340
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




был бы толк..


-----
https://vk[dot]com/tvoycase_ru - Твой чехол со своим дизайном
 
 Top
fdr21
Отправлено: 27 Июня, 2012 - 09:11:13
Post Id



Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Июнь 2012  


Помог: 5 раз(а)




при беглом взгяде по моему после
$cache =new cacheClass();
нужно вызвать
$cache->start()
а потом уже $cache->ag_ob_start();
 
 Top
maragon
Отправлено: 27 Июня, 2012 - 22:59:20
Post Id



Посетитель


Покинул форум
Сообщений всего: 340
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




fdr21, На этом спасибо.
У меня сайт состоит из блоков.
левый блок - центр (контент) - правый блок
Мне нужно закэшировать только центр, но есть одно но..
PHP:
скопировать код в буфер обмена
  1.  
  2. // Show file from cache if still valid
  3.             if (time() - $this->cachetime < $this->cachefile_created) {
  4.                 ob_start('ob_gzhandler');
  5.                 @readfile($this->cachefile);
  6.                 ob_end_flush();
  7.  
  8.                 exit();
  9.             }
  10.  

Загадочный exit(); - он убирает правый блок. Ежели его изъять из класса, то я увижу повторение контента (то, что вытащилось из бд, и то что закэшировалось в файл)
КАК БЫТ?! Не понял
(Добавление)
Может у кого есть рабочий и проверенный клас для кэширования?
(Добавление)
http://php.su/articles/?cat=exam...les&page=005
Вроде местный, вроде рабочий, кто пробовал? отпишитесь!


-----
https://vk[dot]com/tvoycase_ru - Твой чехол со своим дизайном
 
 Top
maragon
Отправлено: 28 Июня, 2012 - 15:45:25
Post Id



Посетитель


Покинул форум
Сообщений всего: 340
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




up!


-----
https://vk[dot]com/tvoycase_ru - Твой чехол со своим дизайном
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB