Нужно выводить рандомно записи из нескольких категорий. Ранее использовал такую конструкцию Варинт 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'); // Всегда выводим содержимое файла ?> Вариант 2 сделать вывод через функцию 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 мин.?