ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 15.08.2008, 13:09
geezer.code
Reservists Of Antichat - Level 6
Регистрация: 22.01.2007
Сообщений: 616
Провел на форуме:
7452489

Репутация: 1359


По умолчанию

интегрировать в твой код некогда .. но примерно вот такой выбор по дате последнего обновления рандома
PHP код:
<?
//вот эту таблу ты создал. в ней будем хранить дату последнего рандома.
/*CREATE TABLE eu_random_delayed (
id smallint(5) unsigned NOT NULL auto_increment,
ldate datetime NOT NULL,
PRIMARY KEY (id)
);*/

$sql "SELECT ldate FROM eu_random_delayed where ldate > (now() - INTERVAL 1 DAY)";
$result mysql_query($sql);
$rows mysql_num_rows($result);
if ((!
$rows) || ($rows 1)) { //тут идет код с рандомом
//и проапдейтим последнюю дату рандома
$sql "insert into eu_random_delayed(ldate) values(now())";
 
mysql_query($sql);
}
else {
//тут идет код без рандома 
}
?>
п.с. я не пхп-программер.. если наду будет на руби )) то будет полный код

Последний раз редактировалось geezer.code; 15.08.2008 в 13:12..
 
Ответить с цитированием

  #12  
Старый 15.08.2008, 13:20
serg-php
Участник форума
Регистрация: 28.01.2008
Сообщений: 247
Провел на форуме:
205760

Репутация: 28
По умолчанию

Вариант понятен, но не понятно его внедрение.

Если оказывается, что один день не прошел, то какие данные должен вывести скрипт?
Очевидно точь-в-точь с предыдущим рандомом. Тогда, как он знает, какие строки он выбирал в преды дущем рандоме?
 
Ответить с цитированием

  #13  
Старый 15.08.2008, 13:57
geezer.code
Reservists Of Antichat - Level 6
Регистрация: 22.01.2007
Сообщений: 616
Провел на форуме:
7452489

Репутация: 1359


По умолчанию

Цитата:
Сообщение от serg-php  
Вариант понятен, но не понятно его внедрение.

Если оказывается, что один день не прошел, то какие данные должен вывести скрипт?
Очевидно точь-в-точь с предыдущим рандомом. Тогда, как он знает, какие строки он выбирал в преды дущем рандоме?
если так то нужно создать еще одну промежуточную таблицу. в которую выводить результаты последнего рандома.
 
Ответить с цитированием

  #14  
Старый 15.08.2008, 14:16
serg-php
Участник форума
Регистрация: 28.01.2008
Сообщений: 247
Провел на форуме:
205760

Репутация: 28
По умолчанию

Тогда ситуация в корне меняется!

У меня вывод рандома по 5 нужным мне категориям!
Рандом и скрипта, который инклудится убираем.

А ситуация такая:

Каждые сутки или иной интервал, скриптец запусакется и рандобно выбирает данные из указанных категорий!
 
Ответить с цитированием

  #15  
Старый 15.08.2008, 14:48
serg-php
Участник форума
Регистрация: 28.01.2008
Сообщений: 247
Провел на форуме:
205760

Репутация: 28
По умолчанию

Подсказали такой вариант:

Главная таблица eu_add


1. Создать таблицу eu_add_random , в которой будет ифа, к ней, собственно, скрипт из инклуда будет обращаться, а не к eu_add;

(Это не проблема - знаю как сделать)


2. Скрипт, который будет пополнять таблицу eu_add_random из таблицы eu_add раз в сутки?


Как он будет запускаться? (Можно ли не кроном? Или крон опитимальный варант?)
 
Ответить с цитированием

  #16  
Старый 15.08.2008, 14:51
geezer.code
Reservists Of Antichat - Level 6
Регистрация: 22.01.2007
Сообщений: 616
Провел на форуме:
7452489

Репутация: 1359


По умолчанию

Цитата:
Сообщение от serg-php  
Подсказали такой вариант:

Главная таблица eu_add


1. Создать таблицу eu_add_random , в которой будет ифа, к ней, собственно, скрипт из инклуда будет обращаться, а не к eu_add;

(Это не проблема - знаю как сделать)


2. Скрипт, который будет пополнять таблицу eu_add_random из таблицы eu_add раз в сутки?


Как он будет запускаться? (Можно ли не кроном? Или крон опитимальный варант?)
можно не кроном... для этого при каждом запросе к скрипту будет выполняться минимум 1 лишний запрос к базе. поэтому лучше кроном.
 
Ответить с цитированием

  #17  
Старый 15.08.2008, 15:34
serg-php
Участник форума
Регистрация: 28.01.2008
Сообщений: 247
Провел на форуме:
205760

Репутация: 28
По умолчанию

Тогда я делаю так:

1. Делаю дубликат таблицы eu_add и называю ее eu_add_random

2. Создаю пхп-файл, который собственно крон и должен запускать.

3. В файле пишу, копировать из eu_add в eu_add_random из таких категорий, случайним образом.

И все!
 
Ответить с цитированием

  #18  
Старый 15.08.2008, 16:15
serg-php
Участник форума
Регистрация: 28.01.2008
Сообщений: 247
Провел на форуме:
205760

Репутация: 28
По умолчанию

PHP код:
<?

/* Замените нижеследующие переменные на свои */
$host "localhost";    // MySQL server
$user_db "";        // MySQL пользователь
$pass_db "";            // MySQL пароль
$dbase "";        // MySQL база данных
$dtable "eu_ad";        // Таблица в базе данных
$dtable_rnd "eu_add_random";        // Таблица в базе данных




/* Соединение с сервером базы данных */
mysql_connect ($host$user_db$pass_db);
/* Выбор базы данных */
mysql_select_db($dbase);
/* Создание SQL запроса */
$sql "SELECT link_id, images, v_title, v_255_12, v_descr, catid, rand() AS 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";

$sql "INSERT link_id, images, v_title, v_255_12, v_descr, catid INTO $dtable_rnd";


?>
 
Ответить с цитированием

  #19  
Старый 15.08.2008, 16:18
geezer.code
Reservists Of Antichat - Level 6
Регистрация: 22.01.2007
Сообщений: 616
Провел на форуме:
7452489

Репутация: 1359


По умолчанию

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";
 
Ответить с цитированием

  #20  
Старый 15.08.2008, 17:33
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

А не проще ли вместо извращений с БД выводить результат запроса в файл и его просто инклудить? Преимущества на лицо - в десятки раз уменьшаем количество запросов к базе (так как надо раз обновлять файл раз в час/сутки), не надо создавать лишних, да и ненужных таблиц

Получится что-то вроде:
PHP код:
$filetime=lstat('news.txt'); // Получаем массив информации о файле
$cur=time()-$ftime[9]; // Получаем время прошедшее с последней модификации файла
if ($cur>2500// Если прошло больше 2500 секунд, то делаем запрос к БД
{
$f=fopen('news.txt','w'); 

// Все echo заменяем на $out.= 
// Чтобы собрать в эту переменную все данные которые надо выводить

$host "localhost";    // MySQL server
$user_db "";        // MySQL пользователь
$pass_db "";            // MySQL пароль
$dbase "";        // MySQL база данных
$dtable "eu_ad";        // Таблица в базе данных

mysql_connect ($host$user_db$pass_db);
mysql_select_db($dbase);
$sql "SELECT link_id, images, v_title, v_255_12, v_descr, catid, rand() AS rnd FROM $dtable WHERE ((catid=403)OR(catid=404)) GROUP BY link_id ORDER BY rnd LIMIT 5";
$result mysql_query($sql);
$rows mysql_num_rows($result);
$out="";
if ((!
$rows) || ($rows 1)) {$out.="Результатов НЕТ!!!";}
else {
      
$out.="<table width=500 class=last_pellets>";
      while(list(
$id_link$images$v_title$v_255_12$v_descr ) = mysql_fetch_row($result)) {
$images explode"\n"$images );
$images $images[0];
      
$v_descr=strip_tags($v_descr);
      
$v_descr=substr($v_descr,0,150);

       
$out.= "<tr><td>";
           if(empty(
$images))
             echo 
"";
             else
            
$out.= "<a href='page-o$id_link.html'><img src='files/$images' width=60 class=imgConf></a>"


  
$out.="</td><td><a href='page-o$id_link.html'>$v_title</a>   $v_descr ... </td><td>$v_255_12</td></tr>";
}
       }
$out.="</table>";
fwrite($f,$out);fclose($f); // Записываем в файл
}

echo 
file_get_contents('news.txt'); // Всегда выводим содержимое файла 
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ