Dreammaker

Dreammaker
Рейтинг
569
Регистрация
20.04.2006
dlyanachalas:
название песни вообще по-русски глупо звучит..

несмотря, что для меня название песни звучит нормально, ибо украинский - второй родной язык, но суть от этого не меняется - песня - УГ (по крайней мере в рамках евровидения), та же Лобода хоть картинку сделала по-красивее. :)

Если честно не понял почему победил Рыбак. И удивило, почему Украина ему дала сколько там 12 балов?

одно из преимуществ сайта, за которое требуется просить доплаты - уникальный копипаст :)

gesik:
Такой сайт с лёгкостью можно организовать на DLE.

вот только поддержка потом превратится в ад :) Если что-то нужно будет дописать нестандартное.

SELECT * FROM dle_post WHERE RAND( ) < 0.001 ORDER BY RAND( ) LIMIT 5;
show status like 'handler%';
Variable_name Value
Handler_commit 0
Handler_delete 0
Handler_discover 0
Handler_prepare 0
Handler_read_first 0
Handler_read_key 0
Handler_read_next 0
Handler_read_prev 0
Handler_read_rnd 5
Handler_read_rnd_next 4359
Handler_rollback 0
Handler_savepoint 0
Handler_savepoint_rollback 0
Handler_update 0
Handler_write 18

То есть, получается просматриваются все записи или почти все.

N_MONax:
Только тем, что он переберёт ВСЕ значения.

EXPLAIN SELECT * FROM dle_post WHERE RAND( ) < 0.001 ORDER BY RAND( ) LIMIT 5

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE dle_post ALL NULL NULL NULL NULL 4338 Using where; Using temporary; Using filesort

А ваш способ прям не просматривает все записи :D

snk,

document.getElementById("banner_1").innerHTML=’<scr'+'ipt src=”http://адрес сайта баннерки/”></scr'+'ipt>’;

так попробуйте.

xant, тут ещё возникает момент, есть ли текстовые поля в таблице, и насколько они заполнены.

Один из нормальных путей это:

1) получить MIN(id), MAX(id);

2) сгенерировать 50 штук чисел между этими значениями;

3) Сделать или 50 запросов, или сделать id = IN(число, число, число, число ....), или через UNION. Всё это ориентируясь на последовательность полученных в п.2 значений

4) полученные результаты перевести в массив, а его в свою очередь сериализовать и положить в кеш, обновлять вышеуказанным способом раз в сутки.

5) Доставать массив разсериализовывать и доставать оттуда случайным образом 5 значений, выводить их.

Моменты на которые стоит обратить внимание:

1) если в п.3 есть ещё какие-то WHERE, то обязательно нужно делать индексы, а лучше составные.

2) мы можем получить не 50, а меньше значений - так как некоторые посты могут быть удалены, в скрипте нужно учитывать это.

3) этот пункт для тех, кто может заметить, что здесь псевдослучайность - обычный пользователь врядли будет смотреть больше 10 страниц, а постоянные посетители врядли будут смотреть на случайные посты.

В целом данный способ испробован и успешно работает, а почему б ему не работать :), на сайте с несколькими десятками тысяч уников (от 30 до 80, в среднем - 40-50К), записей где-то около 5-6 тысяч. Проблемы были только один раз, поэтому я и настаиваю на составных индексах, тогда всплыла проблема как раз с этим.

p.s. общий принцип похож на описанный выше modobaks'ом.

купил, называется товар который вам абсолютно ненужен за цену от которой вы не смогли отказаться :)

Всего: 10921