serg30
Новичок
Нужно выводить рандомно записи из нескольких категорий.
Ранее использовал такую конструкцию
Варинт 1
Инклудил файл
Вариант 2 сделать вывод через функцию
Какой из предложенный вариантов быстрее работает и почему?
Как во второй вариант добавить интервал смены рандомных позиций 10 - 20 мин.?
Ранее использовал такую конструкцию
Варинт 1
Инклудил файл
PHP:
$filetime=lstat('files/random_entries.txt'); // Получаем массив информации о файле
$cur=time()-$filetime[9]; // Получаем время прошедшее с последней модификации файла
if ($cur>2500) // Если прошло больше 2500 секунд, то делаем запрос к БД
{
$f=fopen('files/random_entries.txt','w');
// Все echo заменяем на $out.=
// Чтобы собрать в эту переменную все данные которые надо выводить
$host = "localhost"; // MySQL server
$user_db = "111111"; // MySQL пользователь
$pass_db = "111111"; // MySQL пароль
$dbase = "222222"; // MySQL база данных
$dtable = "eu_entries"; // Таблица в базе данных
mysql_connect ($host, $user_db, $pass_db);
mysql_select_db($dbase);
mysql_query("SET NAMES 'cp1251'");
$sql = "SELECT link_id, images, catid, v_title, v_255_13, v_descr, rand() AS rnd FROM $dtable WHERE ((catid=403)OR(catid=404)) AND images!='' GROUP BY link_id ORDER BY rnd LIMIT 800";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
$out="";
if ((!$rows) || ($rows < 1)) {$out.="Результатов НЕТ!!!";}
else {
$out.=" ";
while(list($id_link, $images, $catid, $v_title, $v_255_13, $v_descr ) = mysql_fetch_row($result)) {
$images = explode( "\n", $images );
$images = $images[0];
$v_descr=strip_tags($v_descr);
$v_descr=str_replace(' ',' ',$v_descr);
$v_descr=str_replace('.','. ',$v_descr);
$v_descr=str_replace(',',', ',$v_descr);
$v_descr=str_replace('(',' (',$v_descr);
$v_descr=str_replace(')',') ',$v_descr);
$v_descr=str_replace(' ',' ',$v_descr);
$v_alt=substr($v_title,0,20);
$v_title=substr($v_title,0,26);
$v_descr=substr($v_descr,0,71);
$v_descr=mb_strtolower($v_descr);
$out.= "";
if(empty($images))
echo "";
else
$out.= "<a href=\"page-o$id_link.html\"><img src=\"files/small/$images\" width=\"60\" class=\"imgThum\"></a>";
$out.="<div class=\"pdsc\"><a href=\"page-o$id_link.html\">$v_title</a> $v_descr $v_255_13 <span>»</span></div></div>";
}
}
$out.="";
fwrite($f,$out);fclose($f); // Записываем в файл
}
echo file_get_contents('files/random_entries.txt'); // Всегда выводим содержимое файла
?>
PHP:
function block_RandomEntries_Browse(&$tpl, $args = ''){
global $db;
$hw_num = isset($args['amount']) ? abs(intval($args['amount'])) : 10;
$mass = $db->one_col_array("SELECT link_id FROM ".TBL_AD." WHERE ((catid=403)OR(catid=404)) AND approved='1' AND user_approved='1' AND images!=''");
shuffle($mass);
$tmp = array_slice($mass, 0, $hw_num);
$zap=implode(',',$tmp);
$ql = 'SELECT link_id,
v_title AS f_title,
v_descr AS f_descr,
images FROM '.TBL_AD.
' WHERE link_id IN ('.$zap.')'.
' ORDER BY link_id DESC';
$res = $db->query($ql);
while($v = mysql_fetch_assoc($res)){
$v['f_title'] = Cut_Text_by_words($v['f_title'], 40);
$v['f_descr'] = strip_tags($v['f_descr']);
$v['f_descr'] = Cut_Text_by_words($v['f_descr'], 70);
$tpl->AddCell('b_RandomEntries_Browse', hwSQLRowGet($v));
}
}
Какой из предложенный вариантов быстрее работает и почему?
Как во второй вариант добавить интервал смены рандомных позиций 10 - 20 мин.?