- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть такой блок, который выводит рандомно релевантные статьи из категории.
Данные кэшируются, но при рандомной выборке (rand() AS rnd)
при выводе статьи блок релевантных статей постонянно меняется.
1. Хотелось бы сделать так, чтобы при обновлении страницы новый рандомный
запрос выполнялся через некоторый интервал.
2. Где-то читал, что конструкция (rand() AS rnd) в запросе к мускулу не производительна
и может быть причиной slow queries. Ее можно как-то оптимизировать, усовершенствовать?
Считывайте все ID из таблицы, потом через PHP выбирайте рандомом из этого массива 1 значения и делайте уже запрос с точным ID и LIMIT 1
А если мне нужно от 3-10 значений в зависимости от настроек?
А если мне нужно от 3-10 значений в зависимости от настроек?
for или while Вам в помощь, пусть в цикле формируются и закидываются в $randin[]
Потом просто 1 запрос с указанием какие ID вывести.
1. Читать этот блок из текстового файла. Текстовый файл обновлять кроном (либо то же самое сделать непосредственно на PHP. Если таймаут прошел, вытаскиваем из БД, заносим в файл, отображаем, иначе отображаем из файла)
2.
Разницы нет. Выбирайте сколько нужно, потом select ... from ... where id in (...)
P.S. Если записей очень много, то, думаю, на счет второго пункта надо еще помозговать
хотя можно даже без цикла...
Просто берёте все ID в массив, перемешиваете и берёте первых 3-10 элемента.
:)
Как вариант, если, допустим статей в базе очень много, а выбрать надо всего 3-5 случайных, то рациональнее выполнить N запросов вида
где rand - число в диапазоне 0..кол-во_статей, сгенерированное пхп
выбирайте ID в массив и рандомьте его - array_rand($array,сколько новостей надо)
так проще и ненадо при выборе случайной новости проверять нет ли её уже
AlexVenga добавил 24.08.2011 в 15:41
блин, пока писал опередили....
AlexVenga добавил 24.08.2011 в 15:43
Как вариант, если, допустим статей в базе очень много, а выбрать надо всего 3-5 случайных, то рациональнее выполнить N запросов вида
где rand - число в диапазоне 0..кол-во_статей, сгенерированное пхп
тут ещё надо смотреть чтобы новости не повторялись... неудобно....
Вариант такой имеется и он работает для одной страницы с новостью, а если страниц больше 1, то бля каждой создавать текстовый файл ?
у меня таких файлов 85к и обновляютя раз в сутки, но не по крону а по дате обновления файла чтобы не все сразу - работает прекрасно
Один блок = один файл. А на скольких страницах этот блок не важно. Либо я вас не до конца понял.