![]() |
Отсроченный рандомайзер
Имеется скрипт:
Код:
<?Как сделать, чтобы рандомайзер не сразу срабатывал, а через 5 - 10 часов? Либо выводил последние 10 записи? |
Уточни, не понятно что надо сделать.
|
Чтобы условие рандома выполнялось через нное кол-во времени!
|
поставить его на Cron
|
На крон, думаю, нерационально!
|
Благодарь всех, кто помог разобраться!
Огромная благодарноть blaga! |
Все-таки решил сделать рандомайзер отсроченым!
Создать таблицу, а потом обращаться и смотреть дату, далее рандомить (люди подсказали сделать так)! |
Таблицу создал
CREATE TABLE eu_random_delayed ( id smallint(5) unsigned NOT NULL auto_increment, ldate datetime NOT NULL, PRIMARY KEY (id) ); |
Что дальше делать?
По-логике дописывать файл, содержание которого приведено выше! Что дописывать, не знаю! |
PHP код:
|
интегрировать в твой код некогда .. но примерно вот такой выбор по дате последнего обновления рандома
PHP код:
|
Вариант понятен, но не понятно его внедрение.
Если оказывается, что один день не прошел, то какие данные должен вывести скрипт? Очевидно точь-в-точь с предыдущим рандомом. Тогда, как он знает, какие строки он выбирал в преды дущем рандоме? |
Цитата:
|
Тогда ситуация в корне меняется!
У меня вывод рандома по 5 нужным мне категориям! Рандом и скрипта, который инклудится убираем. А ситуация такая: Каждые сутки или иной интервал, скриптец запусакется и рандобно выбирает данные из указанных категорий! |
Подсказали такой вариант:
Главная таблица eu_add 1. Создать таблицу eu_add_random , в которой будет ифа, к ней, собственно, скрипт из инклуда будет обращаться, а не к eu_add; (Это не проблема - знаю как сделать) 2. Скрипт, который будет пополнять таблицу eu_add_random из таблицы eu_add раз в сутки? Как он будет запускаться? (Можно ли не кроном? Или крон опитимальный варант?) |
Цитата:
|
Тогда я делаю так:
1. Делаю дубликат таблицы eu_add и называю ее eu_add_random 2. Создаю пхп-файл, который собственно крон и должен запускать. 3. В файле пишу, копировать из eu_add в eu_add_random из таких категорий, случайним образом. И все! |
PHP код:
|
SELECT link_id, images, v_title, v_255_12, v_descr, catid, rand() AS rnd INTO $dtable_rnd FROM $dtable WHERE ((catid=471)OR(catid=473) OR(catid=474) OR(catid=475)OR(catid=476)) GROUP BY link_id ORDER BY rnd LIMIT 5";
|
А не проще ли вместо извращений с БД выводить результат запроса в файл и его просто инклудить? Преимущества на лицо - в десятки раз уменьшаем количество запросов к базе (так как надо раз обновлять файл раз в час/сутки), не надо создавать лишних, да и ненужных таблиц
Получится что-то вроде: PHP код:
|
Вот люди предлагают такой вариант:
PHP код:
|
Посмотри выше, то же самое только не нужно десяток двадцатиэтажных мускульных запросов и скрипт практически умещается на коленке
|
Gifts,
это тоже вариант! Касательно нагрузки на систему может быть удачный! Где файл news.txt хранить? В корневой или глубже? |
У меня вывод по 5 разделам! Это что 5 инклудов делать?
Значит 5 файлов news.txt (news1.txt,news2.? |
Gifts, в товоем предложении что-то нето! - При каждом запросе разные данные выводятся, а они должны выводиться только через 24 часа!
|
Если у тебя есть скрипт, который при каждом открытии страницы выводит что-то там по 5 категориям, то вставляешь его между строчками
$f=fopen('news.txt','w'); и fwrite($f,$out);fclose($f); Тогда в течение 2500 у тебя будет появляться одна и та же страница с тем выводом, который ты хочешь. Файл news.txt может находиться где угодно, главное чтобы он был открыт для записи (права 777 на всякий случай) и чтобы в скрипте все ссылки были исправлены на новое местоположение этого файла Строчка PHP код:
PHP код:
|
А я инклуд делал того файла который содержит код Gifts!
|
Я бросил код Gifts в отдельный файл, который инклудил в index.php! Неправильно?
|
Ошибка в скрипте
Строчка PHP код:
PHP код:
Нормально он инклудится, только на всякий случай пути до news.txt нужно указывать абсолютные в скрипте |
Как сделать, чтобы код Gifts в отдельном файле инклудить в index.php?
|
Вообще в данной ситуации если инклуддить news.txt, то файл с кодом Гифтс, запускать кроном!
|
Работает, Гифтс!
Я говорю по пяти разделам! У меня согласно данному скрипту реализуется только по одному разделу! Получается 5 инклудов! Скрипта гифта, только с разным обращением к таблице! |
Например 1000 хостов в сутки 5 инклудов!
Будет ли это максимально оптимальным вариантом реализации моего замысла? |
>.< Зачем кроном? Каждый раз пользователь заходя на страницу будет получать либо кешированную страницу, либо он своим заходом ее и обновит, лишние телодвижения совершать не надо. Задержка между обновлениями в строчке if ($cur>2500) Число 2500 - это количество СЕКУНД между обновлениями
|
Цитата:
А как быть по други вопросам? |
Вообще, Гифтс!
Сейчас шлифую твой вариант! Весьма удачный, должен заметить! |
Вообщем, сделал 5 инклудов! Все выводит рандомится с интервалом 2500 секунд!
|
Прошу тему пока не закрывать! Возможно, что-то работать не будет!
|
Благодарю всех, кто мне помогал!
Особенно благодарю Гифта его вариант настолько дельный. Жаль, что я раньше такого способа не знал! Заменил 2500 на 86400 и наслаждаюсь рандомизацией 1 в сутки! |
| Время: 10:48 |