в mysql функция Order by rand() очень и очень ресурсоёмкая.
Можно и ваш код, мне лично удобнее перемешивать массив.
И кстати лучше mt_rand вместо rand.
rand очень плохо работает даже на минимальных выборках много дублей.
500 К это не много. Ну сколько это 100 МБ? Ну пусть даже в обработке это будет 200МБ в памяти.
В mysql и использование RAND() убьёт вообще сервак, если что :)
Конечно тут много вариаций оптимизированныя, но это уже останется для другого топика.
А какая разница? У нас память нынче не 2 МБ и процессоры не IBM 386, где надо было бы просчитывать и экономить. Хоть так, хоть эдак операция в памяти будет проходить за 0,00002 секунды.---------- Добавлено 12.01.2015 в 00:13 ----------Конечно можно и так сделать:
<?
$text=file("/home/keyword.txt",FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES));shuffle($text);
$text2=file("/home/keyword2.txt",FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES));shuffle($text2);
$text3=file("/home/keyword3.txt",FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES));shuffle($text3);
$textcount=count($text)-1;
$textcount2=count($text2)-1;
?>
и выводим
<? echo $text[mt_rand(0,$textcount)];?>
<? echo $text2[mt_rand(0,$textcount3)];?>
<? echo $text3[mt_rand(0,$textcount2)];?>
Вы всё правильно написали. Считывайте сразу все файлы в разные переменные потом подставляйте нужны.---------- Добавлено 11.01.2015 в 23:25 ----------<?
$text=file("/home/keyword.txt",FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES));
$text2=file("/home/keyword2.txt",FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES));
$text3=file("/home/keyword3.txt",FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES));
<? shuffle($text); echo $text[0];?>
<? shuffle($text2); echo $text2[0];?>
<? shuffle($text3); echo $text3[0];?>
Тогда делайте по другому.
В начале страницы:
$text=file("/home/keyword.txt",FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES)); // Считываем массив
shuffle($text); // Перемешиваем
Далее где нужно уже расставляете:
<? echo $text[0];?>
<? echo $text[1];?>
<? echo $text[2];?>
........
<? echo $text[30];?>
Сколько уже вам надо.---------- Добавлено 11.01.2015 в 23:00 ----------Если количество раз не известно:
тем самым мы не будем дёргать файл с диска много раз.
И я не ошибся, везде 0 надо ставить в таком варианте.
Сколько раз придуманный мной код вызывается на странице ? :)---------- Добавлено 11.01.2015 в 22:54 ----------
30К? Не разгрузите именно для этой задачи.
Ну пропишите к ссылке параметр ?banner=1 и ?banner=2
Такого не бывает т.к. нельзя заведомо знать, где разместит свои ссылки движок каталога.
Учитывайте ещё модерацию.
Также время потраченное на составление такого отчёта никак не вяжется с эффективностью. Раньше может быть и можно было так заморачиваться, сейчас это вообще потеряло смысл.
Странно. Пробовал 2013 году на старый аккаунт привязать карту, меня послали, пришлось новый аккаунт создавать. :(
Тема уже не актуальна, НЛО это попса, массовые глюки уже закончены + по телика зомбировать эту тему перестали.