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.SU

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


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

> Без описания
maragon
Отправлено: 24 Июля, 2012 - 01:42:03
Post Id



Посетитель


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


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




Скажем на сайт вывожу:
новых пользователей
Лидеров сайта и прочее
Каждый раз тянуть из бд - глупо.
Каким скриптом можно закэшировать в файл и считывать из него? А?!


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



Посетитель


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


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




В силе! Закатив глазки


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



Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Апр. 2012  
Откуда: Кисловодск


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




В файл не надо, лучше memcache используйте. Улыбка
(Добавление)
А если все-таки надо на файлах, то написал пример:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. header('Content-type: text/html; Charset=windows-1251');
  3.  
  4. require_once 'stats.php';
  5.  
  6. if($lastupd + 600 < time())
  7. {
  8.         $sql = 'SELECT COUNT(`id`) FROM `users`';
  9.         $query = mysql_query($sql);
  10.         $num_users = mysql_result($query, 0, 0);        
  11.        
  12.         $content = '<?php' . PHP_EOL . '$lastupd = ' . time() . ';' .
  13.              PHP_EOL . '$num_users = ' . $num_users . ';';
  14.  
  15.         file_put_contents('stats.php', $content);
  16. }
  17.  
  18. echo 'Пользователей: ' . $num_users;

Сразу говорю, не проверял. Но работать должно. Данные будут обновляться каждые 10 минут.
(Добавление)
Вот написал простенький пример использования memcache:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. header('Content-type: text/html; Charset=windows-1251');
  3.  
  4. $mcache = new memcache;
  5. $mcache->connect('localhost', 11211);
  6.  
  7. if(!$mcache->get('num_users'))
  8. {
  9.         $sql = 'SELECT COUNT(`id`) FROM `users`';
  10.              $query = mysql_query($sql);
  11.              $num_users = mysql_result($query, 0, 0);
  12.        
  13.         $mcache->set('num_users', $num_users, false, 600);
  14. }
  15. else
  16. {
  17.         $num_users = $mcache->get('num_users');
  18. }
  19.  
  20. echo 'Пользователей: ' . $num_users;

Не проверял... Работать должно. Смысл думаю понятен. Обновляется опять же каждые 10 минут.

(Отредактировано автором: 24 Июля, 2012 - 14:05:01)

 
 Top
maragon
Отправлено: 24 Июля, 2012 - 14:03:16
Post Id



Посетитель


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


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




Вам спасибо! Буду копать и пыхтеть!
Может есть у кого еще Варианты? Улыбка


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



Участник


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


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




я бы всёже советовал memcache, работа с оперативкой в разы быстрее, чем с файлами


-----
То что программа работает, не означает что она написана правильно!
 
 Top
caballero
Отправлено: 24 Июля, 2012 - 14:27:29
Post Id


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


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


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




БД сама кеширует данные которые часто выбирются. нет смысла использовать что то еще. Добавь серверу БД оперативки и все дела


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Zuldek
Отправлено: 24 Июля, 2012 - 14:34:41
Post Id


Постоянный участник


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


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




caballero пишет:
БД сама кеширует данные которые часто выбирются. нет смысла использовать что то еще. Добавь серверу БД оперативки и все дела

Для данной задачи именно на этом и стоит остановится. Мемкеш вообще не для такой задачи, как заявлено в топике.
 
 Top
KingStar
Отправлено: 24 Июля, 2012 - 15:11:15
Post Id



Участник


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


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




Zuldek пишет:
caballero пишет:
БД сама кеширует данные которые часто выбирются. нет смысла использовать что то еще. Добавь серверу БД оперативки и все дела

Для данной задачи именно на этом и стоит остановится. Мемкеш вообще не для такой задачи, как заявлено в топике.


согласен, кроме того в файлах ткаже хранить не рекомендуется, под нагрузкой использование file_put_contents() даст обрывки html для пользователей, которым не посчастливится сделать запрос в тот момент, когда php файл потихоньку пишет в файл, или же изобретать колесо, которое позволит всей твоей машине ехать Улыбка короче геморой один, да и только, бери из БД и не мучай свой мозг


-----
То что программа работает, не означает что она написана правильно!
 
 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