Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Перемешать новости и сохранить результат, выборка с базы с помощью RAND, и зафиксировать на 10 мин.
Skesh  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 325
Пользователь №: 26975
На форуме: 5 лет, 8 месяцев, 11 дней
Карма:

Трезвый :
2 года, 1 месяц, 1 день


День добрый, стала интересная задача, сделать выборку новостей с БД, перемешать ее, и чтобы этот результат сохранился на 10 мин, скажем с выборкой и перемешкой проблем нет, а вот как зафиксировать результат на 10 мин.?

Я пока додумался до чего-то такого:

1. В БД сохраняю текущее время
2. Если прошло 10 мин проверяю параметр ASC DESC для Id и date
3. Обновляю текущее время


/*---------- РАНЖИРОВАНИЕ --------*/
$tmp=mysql_fetch_assoc(mysql_query("SELECT * FROM `".$GLOBALS["db_prefix"]."main` WHERE `Id`='1'"));
if (round((strtotime(date("Y-m-d H:i:s"))-strtotime($tmp[ranging_date]))/144)>=10) {
if ($tmp[ranging]>=3) {$tmp[ranging]=1;} else {$tmp[ranging]++;}
sql_update (
$GLOBALS["db_prefix"]."main", # название таблици
array ( # данные
"ranging" =>$tmp[ranging],
"ranging_date" =>date("Y-m-d H:i:s")
),

array ( # условие для WHERE
"field"=>"Id",
"value"=>1
)
);

}

$ASCDESC_1="DESC";
$ASCDESC_2="DESC";

switch ($tmp[ranging]) {
case 1:
$ASCDESC_1="ASC";
$ASCDESC_2="ASC";
break;
case 2:
$ASCDESC_1="DESC";
$ASCDESC_2="ASC";
break;
case 3:
$ASCDESC_1="ASC";
$ASCDESC_2="DESC";
break;
}

if ($data[no_ranging]==1) {
$ASCDESC_1="DESC";
$ASCDESC_2="DESC";
}
unset($tmp);
/*---------- РАНЖИРОВАНИЕ --------*/

$q_2="
SELECT * FROM `"
.$GLOBALS["db_prefix"]."form`
WHERE `moderation`='Активная'
AND `pay_day`='"
.date("Y-m-d")."'
AND `activated`='1'

$AND
ORDER BY `date_add` $ASCDESC_1, `Id` $ASCDESC_2
LIMIT $data[limit_start], $data[limit_num]";


Но это не совсем то поскольку есть всего три результата, а нужно как то так:

 SELECT * from `table1` WHERE `Category` LIKE "%green%" ORDER BY RAND()


Чтобы совсем перемешивало )) и сохранило на 10 мин., есть идеи?



--------------------
*пускает слюну, глядя на код* :)
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Skesh  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 325
Пользователь №: 26975
На форуме: 5 лет, 8 месяцев, 11 дней
Карма:

Трезвый :
2 года, 1 месяц, 1 день


Ну если кому интересно решил так:
1. Все Id с
SELECT * FROM `".$GLOBALS["db_prefix"]."form` ORDER BY RAND()

я сохранял в таблицу.
2. Потом в условие WHERE включал эти Id.
3. Каждые 10 мин чистил таблицу, делал новый RAND и снова сохранял Id в таблицу.

Бубен наверное, но как иначе хз.


--------------------
*пускает слюну, глядя на код* :)
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
depp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 290
Пользователь №: 40589
На форуме: 1 год, 11 месяцев, 29 дней
Карма: 19




хорошее решение.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чеширский кот
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 5903
Пользователь №: 1
На форуме: 10 лет, 9 месяцев, 24 дня
Карма: 125

Не пью :
22 года, 2 месяца, 27 дней


Цитата (Skesh @ 21.06.2016 - 15:36)
Все Id с

я сохранял в таблицу.

Я бы сохранял сами результаты запроса новостей. Прямо готовый ХТМЛ-код.

Кстати, примерно так сделана наша главная страница форума: бОльшая часть информации сохраняется в кеш-файле, перегенерация каждые 15 минут.


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Skesh  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 325
Пользователь №: 26975
На форуме: 5 лет, 8 месяцев, 11 дней
Карма:

Трезвый :
2 года, 1 месяц, 1 день


FatCat интересный подход, вероятно так решаться проблема нагрузки на форум, у меня таких нагрузок нет но на заметку возьму wink.gif


--------------------
*пускает слюну, глядя на код* :)
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22688
Пользователь №: 20039
На форуме: 6 лет, 11 месяцев, 26 дней
Карма: 599




mysqli_multi_query("
TRUNCATE table mycache;
INSERT INTO `mycache` SELECT * FROM `table` ORDER BY RAND();
"
);

Но мне больше нравится решение FatCat ;)


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чеширский кот
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 5903
Пользователь №: 1
На форуме: 10 лет, 9 месяцев, 24 дня
Карма: 125

Не пью :
22 года, 2 месяца, 27 дней


Цитата (Skesh @ 22.06.2016 - 08:10)
вероятно так решаться проблема нагрузки на форум

Да. Есть данные, которые обновляются не очень часто: новости, объявления, рейтинги тем, статистика. Они сохраняются в файл.
Имя файла:
$file = time().'.cache.board.tmp';

При запросе главной страницы читается директория, старьё удаляется. Если есть не устаревший файл, он используется для генерации главной страницы. Если файла нет - генерируется.


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса