Согласен на все 100%!!!
по этому раз в пол года переписываю некоторые сайты с 0....
А сколько строк кода в таких сайтах?
Так что ТС, прекращайте плодить прогерские топики и делайте "чтоб работало", когда будет тормозить нещадно от наплыва народа - уже и денег будет достаточно на нормального архитектора-програмисто, способного все предусмотреть и заложить зарание.
Согласен. Вариант, предложенный через массив, бует быстрее, значит на нем следует и остановиться!
Считывайте все ID из таблицы, потом через PHP выбирайте рандомом из этого массива 1 значения и делайте уже запрос с точным ID и LIMIT 1
function Random_Related_Articles(&$tpl){
global $db,$a_Ad,$TITLE_FIELD;
$reg_id = REGION_CRITERION;
$ql = 'SELECT link_id AS o_id,'.$TITLE_FIELD.' AS o_title, images AS o_images, b_descr AS o_descr, rand() AS rnd FROM '.TBL_AD.
' WHERE catid="'.$a_Ad['catid'].'"AND _region_id IN ('.get_daughter_cats($reg_id, ModTable('Regions','category')).')
'.FilterGetSQL().' GROUP BY link_id ORDER BY rnd LIMIT 4';
создаю файл с серилизованной выборкой нужных полей БД (все поля короткие)
При обращении к странице проверяю сколько файл прожил и не пора ли его заменить, затем либо расерилизовываю в данные и вывожу, либо генерю новые, пишу в файл и вывожу.
Тока из файла надо читать не долгим и тяжелым fopen fread fclose - это дольше чем МуСКУЛ, а прочто filegetcontent/
Если места на диске до жопы то можно после проверки что файл нормальный сразу path_thru делать и он вообще моментом на экран выскочит...
Подход интересный, но если новостей, к примеру 1000, то создается столько же файлов....
, а если есть кэширование, то необходимость в файлах посредственна.
В первом посте при нерандомном запросе, блок для релевантных статей уходил в кэш и жил там до обновления.
При добавлении рандома в sql-запрос, при каждом обновлении в браузере новости, стал рандомно меняться список релевантных статей, для каждой новости свой.
Читать этот блок из текстового файла. Текстовый файл обновлять кроном (либо то же самое сделать непосредственно на PHP. Если таймаут прошел, вытаскиваем из БД, заносим в файл, отображаем, иначе отображаем из файла)
Вариант такой имеется и он работает для одной страницы с новостью, а если страниц больше 1, то бля каждой создавать текстовый файл ?
Делаю так и вижу, что допускаю ошибку!
Получаю ворнинги
Warning: array_shift() [function.array-shift]: The argument should be an array in on line 21
Warning: implode() [function.implode]: Invalid arguments passed in on line 27
$zap = NULL
Ну во-первых нужно заняться нормализацией БД. Т.е. сделать отдельную таблицу всевозможных статусов:
Такая таблица есть
А в таблицу пользователей записывать только числовое id - это сократит как размер БД, так и увеличит производительность
Очень интересно!
Потом построить запрос
Можно ли пример кода для аналогии?
по этому раз в пол года переписываю некоторые сайты с 0....
А сколько строк кода в таких сайтах?
Согласен. Вариант, предложенный через массив, бует быстрее, значит на нем следует и остановиться!
function Random_Related_Articles(&$tpl){
global $db,$a_Ad,$TITLE_FIELD;
$reg_id = REGION_CRITERION;
$ql = 'SELECT link_id AS o_id,'.$TITLE_FIELD.' AS o_title, images AS o_images, b_descr AS o_descr, rand() AS rnd FROM '.TBL_AD.
' WHERE catid="'.$a_Ad['catid'].'"AND _region_id IN ('.get_daughter_cats($reg_id, ModTable('Regions','category')).')
'.FilterGetSQL().' GROUP BY link_id ORDER BY rnd LIMIT 4';
$res = $db->query($ql);
while($v = mysql_fetch_assoc($res)){
array_rand ();
Потом построить запрос
$tpl->AddCell('b_Random_Related_Articles',$v);
}
}
Не знал, что так критично ...
Сессия. Сейчас уточню.
При обращении к странице проверяю сколько файл прожил и не пора ли его заменить, затем либо расерилизовываю в данные и вывожу, либо генерю новые, пишу в файл и вывожу.
Тока из файла надо читать не долгим и тяжелым fopen fread fclose - это дольше чем МуСКУЛ, а прочто filegetcontent/
Если места на диске до жопы то можно после проверки что файл нормальный сразу path_thru делать и он вообще моментом на экран выскочит...
Подход интересный, но если новостей, к примеру 1000, то создается столько же файлов....
, а если есть кэширование, то необходимость в файлах посредственна.
В первом посте при нерандомном запросе, блок для релевантных статей уходил в кэш и жил там до обновления.
При добавлении рандома в sql-запрос, при каждом обновлении в браузере новости, стал рандомно меняться список релевантных статей, для каждой новости свой.
AlexVenga,
А текстовый файл инклудишь и выводишь на странице?
BasePelleta добавил 24.08.2011 в 16:03
Один блок = один файл. А на скольких страницах этот блок не важно. Либо я вас не до конца понял.
Если, к примеру 10 страниц, то для каждой генерятся рандомно свои 4 новости.
Вариант такой имеется и он работает для одной страницы с новостью, а если страниц больше 1, то бля каждой создавать текстовый файл ?
А если мне нужно от 3-10 значений в зависимости от настроек?