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]   

> Описание: база RAND()
dimlksin
Отправлено: 17 Февраля, 2015 - 16:01:11
Post Id


Новичок


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


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




$q=mysql_query("SELECT * FROM `ric` ORDER BY `level` ORDER BY RAND() LIMIT 6";
while($post=mysql_fetch_array($q))
{

с таблицы выводится 6 столбцов рандом и при каждом обновлении страницы они меняются
нужно сделать чтоб менялись раз в 15 минут


}

помогите пожалуйста
 
 Top
GoDr
Отправлено: 18 Февраля, 2015 - 10:14:23
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


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




используй кеширование.
Помести результат запроса в файл.
Перед очередных запросом проверь есть ли файл. Да - проверь время. Прошло 15 минут с момента создания - получи новые данные. Нет файла - получи новые данные


-----
Система управления веб-содержимым Lotos CMS
 
 Top
dimlksin
Отправлено: 18 Февраля, 2015 - 11:43:34
Post Id


Новичок


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


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




[quote=GoDr][/quote]
я не силен в php можешь мне написать код.
буду очень благодарен.
 
 Top
GoDr
Отправлено: 18 Февраля, 2015 - 13:37:09
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


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




Где-то так
PHP:
скопировать код в буфер обмена
  1.  
  2. // Ставил флаг ошибки.. Так на всякий случай
  3. $flag = false;
  4.  
  5. // Жизнь кеша (15 мин)
  6. $time_cache = 60 * 15;
  7.  
  8. // Проверяем существует ли файл кеша
  9. if (file_exists('cache_sql_q')) {
  10.  
  11.     // Достаём наши данные из файла и преврашаем их в нужный нам вид
  12.     $q = unserialize(file_get_contents('cache_sql_q'));
  13.  
  14.     // Проверяем есть ли в данных наш ключик
  15.     if (isset($q['timer_cache_sql_q'])) {
  16.  
  17.         // Проверяем значение и если разница во времени меньше 15 минут
  18.         if (((time()) - $q['timer_cache_sql_q']) < $time_cache) {
  19.  
  20.             // Поменяем флажок на "ВСЁ ОК"
  21.             $flag = true;
  22.  
  23.             // Для наглядности и примера выведем информацию по кешу
  24.             echo 'Используется данные кеша. Осталось ' . ($time_cache - (time() - $q['timer_cache_sql_q'])) . ' секунд<hr>';
  25.         }
  26.     }
  27. }
  28.  
  29. // Проверяем наш флажок.. Нашёлся ли кеш с правильным временем
  30. if (!$flag) {
  31.     // Достаём данные из базы
  32.     // В моём случае для примера просто сделал массив
  33.     $q = array();
  34.     $q[1]['name'] = 'Name 1';
  35.     $q[1]['title'] = 'Title 1';
  36.     $q[2]['name'] = 'Name 2';
  37.     $q[2]['title'] = 'Title 2';
  38.     $q[3]['name'] = 'Name 3';
  39.     $q[3]['title'] = 'Title 3';
  40.     $q[4]['name'] = 'Name 4';
  41.     $q[4]['title'] = 'Title 4';
  42.  
  43.     // Добавляем ещё уникальный ключик с датой
  44.     // я не буду доверять дате создания файла, всегда какие-то проблемы с сервером
  45.     $q['timer_cache_sql_q'] = time();
  46.  
  47.     // Сериализуем данные и записываем их в файл
  48.     file_put_contents('cache_sql_q', serialize($q));
  49.  
  50.     echo 'Используется данные из Базы Данных.<hr>';
  51. }
  52.  
  53. // Ну и делаем с данными всё что угодна
  54.  
  55. print_r($q);


-----
Система управления веб-содержимым Lotos CMS
 
 Top
difight
Отправлено: 20 Февраля, 2015 - 13:11:37
Post Id



Посетитель


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


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




GoDr пишет:
используй кеширование.
Помести результат запроса в файл.
Перед очередных запросом проверь есть ли файл. Да - проверь время. Прошло 15 минут с момента создания - получи новые данные. Нет файла - получи новые данные


А что если в эти 15 минут в этих элементах что то поменялось, пользователь увидет не актуальную инфу? Улыбка Думаю это не есть верно. Улыбка Тогда уж лучше в файл айдишники записывать строк какие мы получили, и их подставлять при следующем запросе пока не прошло 15 минут
 
My status
 Top
GoDr
Отправлено: 21 Февраля, 2015 - 12:20:37
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


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




difight, ты о чём? Кеширование сделано именно для того чтобы в базу не лазить Радость Например я знаю что информация у меня меняется на сайте 1 раз в день, то ставлю кеширование часа на три смело. Если меняется раз в пять минут, то можно поставить кеширование на пару минут.. В этом вся суть Улыбка
Человек сказал что информация актуальна 15 минут. А значит 15 минут будет неизменна(!)


-----
Система управления веб-содержимым Lotos CMS
 
 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