Конференция "Прочее" » Помогите исправить багу в скрипте поисковика
 
  • xayam © (30.08.08 11:10) [0]
    http://xayam.900megs.com/
    проблема такая. Короче если я ввожу в поле Пользователь значение 'xayam' то все нормально - http://xayam.900megs.com/index.php?s=&pnumber=30&forum=&user=xayam . Заметьте что выводится две ветки из форума Базы. Так вот если добавить ограничение где искать 'Базы', то отобразиться одна ветка - http://xayam.900megs.com/index.php?s=&pnumber=30&forum=%D0%91%D0%B0%D0%B7%D1%8B&user=xayam
    В чем может быть проблема?

    примерно такой код

         if (isset($_GET['pnumber']) and $_GET['pnumber'] != '') $pnumber = $_GET['pnumber']; else $pnumber = 30;
         if (isset($_GET['s'])) $s = $_GET['s']; else $s = '';
         if (isset($_GET['user'])) $user = $_GET['user']; else $user = '';
         if (isset($_GET['forum'])) $forum = $_GET['forum']; else $forum = '';
         if (isset($_GET['page'])) $page = $_GET['page']; else $page = 1;
         if (isset($_GET['order'])) $order = $_GET['order']; else $order = '';

      $start = ($page - 1) * $pnumber + 1;
         if ($user == '') $myuser = 1; else $myuser = "LGN ='\".$user.\"'";
      if ($forum == '') $myforum = 1; else $myforum = "DSC = '\".$forum.\"'";
      if ($s == '') $against = 1; else $against = "match(TITLE) against('$s' IN BOOLEAN MODE)";

         $where = "where ($myuser) and ($myforum) and ($against)";
               $query = "select * from trd $where LIMIT $start, $pnumber";
      $query2= "select COUNT(ID_TRD) from trd $where";
      $tot   = mysql_query($query2);
     
              echo $query;  
              echo '<br />';
              echo $query2;
       
        if (!$tot) exit(mysql_error());
      $total = mysql_result($tot, 0);
      $number = (int)($total/$pnumber);
        if ((float)($total/$pnumber) - $number != 0) $number++;
        if ($total > 1)
        {  
               echo '<div>Найдено:  '.($total - 1);
      if ($forum != '') echo ' на форуме '."'$forum'";
      echo '</div><div>Страницы:  ';
      //
      for ($i = 1; $i <= $number; $i++)
      {
                 if ( fmod($i, 10) == 0.0 ) echo '<br />';
        if ($i != $number)
        {
          if ($page == $i) echo "[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."] ";
       else echo '<a href=\"index.php?page='.$i."&s=".urlencode($s)."&pnumber=".$pnumber."&forum=".url encode($forum)."&user=".urlencode($user).'\">['.(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</a> ";
        }
    else
        {
          if ($page == $i) echo "[".(($i - 1)*$pnumber + 1)."-".($total - 1)."] ";
       else echo '<a href=\"index.php?page='.$i."&s=".urlencode($s)."&pnumber=".$pnumber."&forum=".url encode($forum)."&user=".urlencode($user).'\">['.(($i - 1)*$pnumber + 1)."-".($total - 1)."]</a> ";
        }

      }
    ?>
    </div>
    <hr />

    <?php

     // echo $count.'<br/>';

         $result = mysql_query($query);
      //echo $query;
        $i = $start;
        echo '<table width=\"100%\" border=\"0\"><tr><th align=\"center\" width=\"5%\">Номер</th><th align=\"center\" width=\"*\">Вопрос</th><th align=\"center\" width=\"5%\">Ответов</th><th align=\"center\" width=\"15%\">Ник</th><th align=\"center\" width=\"5%\">Форум</th><th align=\"center\" width=\"20%\">Дата</th></tr>';
        if (!$result) exit(mysql_error());
        if (mysql_num_rows($result) > 0)
        while ($row = mysql_fetch_assoc($result))
        {
        echo '<tr><td width=\"5%\" align=\"center\">'.$i.'.</td>'.
                          '<td width=\"*\"><a target=\"_blank\" href=\"html/html'.$row["FOLDER"].'/'.substr($row["FILENAME"], 0, strlen($row["FILENAME"]) - 3).'html\">'.$row["TITLE"].'</a></td>'.
                          '<td width=\"5%\" align=\"center\"><font size=\"-2\">'.$row["CNT"].'</font></td>'.
                          '<td width=\"15%\" align=\"center\">'.$row["LGN"].'</td>'.
                          '<td width=\"5%\" align=\"center\">'.$row["DSC"].'</td>'.
                          '<td width=\"20%\" align=\"center\"><font class=\"date\">'.$row["DT"].'</font></td>'.
                       '</tr>';  
          $i++;
        }

        echo '</table>';
       
    ?>

    <hr />
    <div>Страницы:  
    <?php
     
      for ($i = 1; $i <= $number; $i++)
      {
                 if ( fmod($i, 10) == 0.0 ) echo '<br />';
        if ($i != $number)
        {
          if ($page == $i) echo "[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."] ";
       else echo '<a href=\"index.php?page='.$i."&s=".urlencode($s)."&pnumber=".$pnumber."&forum=".url encode($forum)."&user=".urlencode($user).'\">['.(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</a> ";
        }
    else
        {
          if ($page == $i) echo "[".(($i - 1)*$pnumber + 1)."-".($total - 1)."] ";
       else echo '<a href=\"index.php?page='.$i."&s=".urlencode($s)."&pnumber=".$pnumber."&forum=".url encode($forum)."&user=".urlencode($user).'\">['.(($i - 1)*$pnumber + 1)."-".($total - 1)."]</a> ";
        }

      }
      echo '</div>';
      } else
     if (isset($_GET['s'])) echo '<div align=\"center\"><font color=\"red\">Ничего не найдено!</font></div>';
    ?>

  • McSimm © (30.08.08 11:21) [1]
    Почему по DSC поиск ?
    Может менялся.
  • McSimm © (30.08.08 11:26) [2]
    BTW,

    В MySQL можно использовать
    SELECT SQL_CALC_FOUND_ROWS `field1`... FROM ... WHERE ... LIMIT ...

    Тогда чтобы получить количество записей не ограниченной LIMIT, можно сделать
    SELECT FOUND_ROWS()
  • McSimm © (30.08.08 11:30) [3]
    по скрипту трудно сказать что не так.

    Получите SQL для второго случая и уже с этим SQL, без PHP, разбирайтесь - сколько выдает записей и почему
  • sniknik © (30.08.08 11:32) [4]
    со скриптом не помогу, не спец... но вопрос имеется - а уверен что в первом поиске все показано? может дело не в доп параметре, а в том, что оно просто последнюю запись не показывает (итерация в цикле гдето завершается раньше, т.к. неправильно конец диапазона определен, на один меньше. это вообще частая ошибка независимо от языка...)
    получается на 2х записях видно, а на больше ну не 67, а 66 кто внимание на одну обратит.
  • sniknik © (30.08.08 11:35) [5]
    > сколько выдает записей
    выдает скорее всего все, имхо, формирует не все, имхо. просто в запросе условием такую ошибку на избирательную не выдачу чегото сделать гораздо сложнее чем неправильно сформировать страницу по выданному.
  • xayam © (30.08.08 11:42) [6]

    > сколько выдает записей

    во втором запросе выдает одну запись, отдельно через sql manager проверил

    > почему

    вот это мне непонятно, похоже на глюк mysql
  • sniknik © (30.08.08 11:55) [7]
    запрос по начинающим тоже на 1 меньше выдает, а вот с основной, обе... не может быть такой избирательности в одном и том же условии запроса.
    вариантов 2 либо данные по которым отбор отличаются (в одном случае например вбито "Базы" в другом "Базы ") либо ты неверно формируешь.
    вывел бы где для теста общее количество полученного, гадать бы не прищлось.
  • sniknik © (30.08.08 12:00) [8]
    > а вот с основной обе
    "чудо" с основной можно обьяснить тем что в первом запросе их тоже 3, и последняя была и тут именно последней 67й... и тоже "откинутой".
  • sniknik © (30.08.08 12:09) [9]
    логично получается...
    58 записей из прочего (с хаям)
    4 из начинающих
    3 из основных
    2 из базы
    ищем все получаем - 58 + 4 + 3 + 2 = 67 (-1 из основной) = 66
    ишем прочее получаем - 57 из 58ми
    начинающих получаем - 3 из 4х
    основных получаем - 2 из 3х (не видна таже что из первого запроса)
    базы получаем - 1 из 2х.

    все сходится, ты теряешь запись...  всегда. где ты это делаешь хз. но не в запросе точно.
  • xayam © (30.08.08 12:15) [10]

    > sniknik ©   (30.08.08 11:55) [7]
    > вывел бы где для теста общее количество полученного, гадать
    > бы не прищлось.

    а там выводит сверху слева - найдено столько то
  • xayam © (30.08.08 12:31) [11]

    > все сходится, ты теряешь запись...  всегда. где ты это делаешь
    > хз. но не в запросе точно

    да по ходу ты прав, запрос
    select COUNT(ID_TRD) from trd where (LGN ='xayam') and (DSC = 'Основная') and (1)

    возвращает 3, а не 2 (( значит ошибка в скрипте есть
  • xayam © (30.08.08 12:41) [12]
    спасибо по ходу нашел ошибку (точнее ошибки), сейчас подправлю и закачаю
  • xayam © (30.08.08 12:54) [13]
    все народ наконец то я доделал это DMSearch пользуйтесь в свое удовольствие, сорри что на бесплатном хостинге (с рекламой), но по-другому вряд ли возможно. Долго я этот DMS пытался закачать на бесплатный хостинг, по ходу дела пришлось решить несколько ограничений такого хостинга, во-первых, нет поддержки xml xsl, во-вторых, в одной папке не может быть больше 2000 файлов, сейчас все эти ограничения преодолены, баги, которые я нашел исправлены. Удачи.
    P.S. Администрации сайта. Можно ли эту ссылку http://xayam.900megs.com указать возле поисковой строки для поиска по старым веткам?
  • Anatoly Podgoretsky © (30.08.08 13:13) [14]
    > xayam  (30.08.2008 12:31:11)  [11]

    Зачем and (1)?
  • KilkennyCat © (30.08.08 13:14) [15]

    > xayam ©   (30.08.08 12:54) [13]

    сервер не найден.
    А что не купишь дешевый нормальный хостинг? это всего сотня рубликов в месяц
  • xayam © (30.08.08 13:17) [16]

    > Anatoly Podgoretsky ©   (30.08.08 13:13) [14]
    > Зачем and (1)?

    да это чтоб лишних проверок не делать

    > KilkennyCat ©   (30.08.08 13:14) [15]
    > сервер не найден.
    > А что не купишь дешевый нормальный хостинг? это всего сотня
    > рубликов в месяц

    а у меня работает

    в общем не до платного хостинга, это же надо его поддерживать постоянно, каждый раз деньги платить, эта суета мне нафиг не нужна
  • KilkennyCat © (30.08.08 13:17) [17]
    "взлетит" - найдена всего одна ветка!?
  • KilkennyCat © (30.08.08 13:18) [18]

    > xayam ©   (30.08.08 13:17) [16]

    ну, ежели нормально искать будет :) я те могу предоставить на своем место.
  • xayam © (30.08.08 13:20) [19]

    > KilkennyCat ©   (30.08.08 13:17) [17]
    > "взлетит" - найдена всего одна ветка!?

    ну это немного не в тему запрос, форум то дельфийский, например 'свойство' выводит 177 веток
  • xayam © (30.08.08 13:22) [20]

    > KilkennyCat ©   (30.08.08 13:18) [18]
    > > xayam ©   (30.08.08 13:17) [16]
    > ну, ежели нормально искать будет

    так нормально ищет по-моему, только по названиям веток и слова длинее 3 символов (это значение по умолчанию в настройках mysql)

    > я те могу предоставить на своем место.

    Это где, сколько места и т.д.?
  • KilkennyCat © (30.08.08 13:23) [21]
    Поиск определяет, что есть делфийское?
    "взлетит-не взлетит" употреблялось фиг знает сколько раз.
  • Anatoly Podgoretsky © (30.08.08 13:23) [22]
    > xayam  (30.08.2008 13:20:19)  [19]

    А ведь много раз взлетали.
  • KilkennyCat © (30.08.08 13:27) [23]

    > xayam ©   (30.08.08 13:22) [20]

    > так нормально ищет по-моему, только по названиям веток и
    > слова длинее 3 символов (это значение по умолчанию в настройках

    Ты видел, какие названия веток бывают? "Хелп!!!" "Помогите решить проблему" в лучшем случае "Удаление файла " и т.д.


    >
    > Это где, сколько места и т.д.?

    www.kilkennycat.ru базаируется на PeterHost, место скока надо будет... кстати, лучше сразу и скажи, скока - я седня оплачивать его пойду, мож, увеличить надо будет...
  • AndreyV © (30.08.08 13:28) [24]
    Sennheiser
    Ничего не найдено!
    Думал найдёт или нет прошлогоднюю ветку Германа.
  • xayam © (30.08.08 13:35) [25]

    > KilkennyCat ©   (30.08.08 13:27) [23]
    > www.kilkennycat.ru базаируется на PeterHost, место скока
    > надо будет... кстати, лучше сразу и скажи, скока

    xml xsl поддерживается (настраивается в php.ini)? А места надо где-то 1.5 гига если хранить в html и 1 гиг если хранить в xml и база данных 25 метров, можно больше чтоб на расширение хватило. Хотя мне лучше сейчас в html хранить.
  • xayam © (30.08.08 13:46) [26]

    > AndreyV ©   (30.08.08 13:28) [24]
    > Sennheiser
    > Ничего не найдено!
    > Думал найдёт или нет прошлогоднюю ветку Германа.

    может быть несколько вариантов
    1) Вы неправильно набираете запрос
    2) Ветка была удалена администрацией DM
    3) Ветка не прошла разбор xml файла. К сожалению такие ветки есть и они не попали в эту базу, потому что в xml файле была ошибка
  • antonn © (30.08.08 14:45) [27]

    > xayam ©

    у тебя код из епрвого поста прям так и есть на сайте? :)
    не страшно? :)
  • xayam © (30.08.08 14:47) [28]

    > antonn ©   (30.08.08 14:45) [27]
    > > xayam ©
    > у тебя код из епрвого поста прям так и есть на сайте? :)
    > не страшно? :)

    не такой, но похожий. А че бояться, если кто найдет ошибки, вместе исправим, хостинг все равно не мой ))
  • antonn © (30.08.08 15:09) [29]
    в первом иньекцией пахнет, жесточайшей :)
  • xayam © (30.08.08 15:44) [30]
    это щас исправим,
    $s = preg_replace("/[^a-zA-Zа-яА-Я0-9+-\*() ]/", "", $_GET['s'])


    Как кстати русские буквы в preg_replace помечать, просто от А до Я или как-то по-другому?
  • McSimm © (30.08.08 16:02) [31]

    > xayam ©   (30.08.08 15:44) [30]
    >
    > это щас исправим,


    Используйте mysql_real_escape_string() для переменных, из которых конструируете запрос. Не надо preg_replace.


    > Можно ли эту ссылку http://xayam.900megs.com указать возле
    > поисковой строки для поиска по старым веткам?

    Сделаю, только через несколько дней, сейчас не могу.
  • xayam © (30.08.08 16:26) [32]

    > antonn ©   (30.08.08 15:09) [29]
    > в первом иньекцией пахнет, жесточайшей :)

    скажу тебе спасибо, если подберешь запрос, который сможет выполнить sql-код
    delete from trd;

  • xayam © (30.08.08 16:48) [33]
    подскажите еще как сделать автозаполнение на javascript, хотел использовать для этого jquery.js , но не знаю как подступиться к js
  • xayam © (30.08.08 16:55) [34]
    Хотя уже нашел http://www.linkexchanger.su/2008/39.html
  • antonn © (30.08.08 17:09) [35]
    и stripslashes сделай, а то имя потом портится %)
  • xayam © (30.08.08 17:17) [36]

    > antonn ©   (30.08.08 17:09) [35]
    > и stripslashes сделай, а то имя потом портится %)

    это для удобства подбора запроса? )))
  • xayam © (30.08.08 18:33) [37]
    так автозаполнение вроде сделал, пишите если не работает как надо, подтормаживает только список выпадать, на локалхосте летает
  • xayam © (30.08.08 19:08) [38]
    мда с автозаполнением на бесплатном хостинге это не дело, еще рекламу в конец дописывают сволочи )) кстати ищет только после ввода 2-ого символа, так что третий не обязательно вводить, может имя уже попало в список.

    Еще такая мысль сделать примерно такую же форму как на этом форуме для отправки сообщений, чтоб в конец файла можно было дописать. Или на фиг?
  • xayam © (30.08.08 19:43) [39]

    > AndreyV ©   (30.08.08 13:28) [24]
    > Sennheiser
    > Ничего не найдено!
    > Думал найдёт или нет прошлогоднюю ветку Германа.


    вот твоя ветка http://xayam.900megs.com/html/html44/3-1168119106.html
  • xayam © (31.08.08 16:00) [40]
    народ давайте активнее, что еще надо в функциональность добавить? Кроме поиска по сообщениям (это я уже знаю)
  • ketmar © (31.08.08 16:43) [41]
    >[40] xayam © (2008-08-31 16:00:00)
    шлюх и блэкджэк.

    ---
    Understanding is not required. Only obedience.
  • xayam © (31.08.08 17:06) [42]
    любой каприз за Ваши деньги))
  • xayam © (31.08.08 20:59) [43]
    еще такая проблема. Как в php получить в строку из html-файла  текст без форматирования (без тегов, без атрибутов, только отображаемый текст), чтобы сделать индексатор файла? Или как-то по-другому делают?
  • antonn © (31.08.08 22:05) [44]
    strip_tags()
  • antonn © (31.08.08 22:10) [45]
    хотя я предпочитаю хранить в базе исходный текст, а не html :)
    и кешировать результаты поиска на некоторое время, чтобы лазия по страницам не искать снова и снова
  • xayam © (31.08.08 22:17) [46]

    > antonn ©   (31.08.08 22:05) [44]
    > strip_tags()

    угу, уже нашел.
  • xayam © (31.08.08 23:00) [47]

    > antonn ©   (31.08.08 22:10) [45]

    че то регулярные выражения подзабыл, как выделять русские/английские слова для индексирования? У меня получилось так
    preg_match_all("|[a-zA-Zа-яА-Я0-9]*|", $contents, $out, PREG_PATTERN_ORDER);

    но не работает
  • xayam © (31.08.08 23:35) [48]
    точней вот так работает

     $count = preg_match_all("/[a-zA-Z0-9_а-яА-Я]{4,}/i", $contents, $out, PREG_PATTERN_ORDER);
     if ($count)
     for ($i = 0; $i < $count; $i++)
        echo  $out[0][$i].'<br />';

    но с русскими буквами что-то не то, вопросики в некоторых местах выводит
  • antonn © (31.08.08 23:44) [49]
    чет не могу представить себе, как оно должно работать...
    а вообще... :)
    setlocale( LC_CTYPE, array('ru_RU.CP1251', 'rus_RUS.1251'));

    $text="++155 %dd% text1 value1=sАвs Бяка text2 value2=aaa 10 asd";

    preg_match_all("#\b(\w+)#i", $text, $out, PREG_PATTERN_ORDER);

    print_r($out);

  • antonn © (31.08.08 23:51) [50]
    в принципе "i" там не нужна...
  • xayam © (31.08.08 23:58) [51]

    > antonn ©   (31.08.08 23:44) [49]

    так тоже вопросы, а вот так вопросов нет -

     $count = preg_match_all("/[a-zA-Zа-Я0-9_]{4,}/i", $contents, $out, PREG_PATTERN_ORDER);
      if ($count)
      for ($i = 0; $i < $count; $i++)
        echo  $out[0][$i].'<br />';

    только почему то русские слова неправильно отбираются, есть короче 4 символов и какие-то обрезанные попадаются
  • xayam © (01.09.08 00:00) [52]
    а как utf8 в локали установить?
  • antonn © (01.09.08 00:05) [53]
    в регулярке "/(ля-ля-ля)/U"
  • antonn © (01.09.08 00:06) [54]
    соответственно локаль вообще убери, это я на локалхосте эксперементировал :)
  • xayam © (01.09.08 00:10) [55]

    > antonn ©   (01.09.08 00:05) [53]
    > в регулярке "/(ля-ля-ля)/U"

    не помогает, еще и английские слова разбиваются на мелкие ((
  • xayam © (01.09.08 23:31) [56]
    в книжке вычитал что так нужно

    $count = preg_match_all("/\b[\w]{4,}\b/s", $contents, $out, PREG_PATTERN_ORDER);


    но тоже не работает с русскими буквами, че за фигня может быть?
  • antonn © (02.09.08 00:13) [57]

    > не помогает, еще и английские слова разбиваются на мелкие
    > ((

    а ты прям так пишешь: /[a-zA-Zа-Я0-9_]{4,}/i
    ? :)

    у меня
    #\b(\w{4,})#is

    выбирает слова от 4х символов, все работает...
  • xayam © (02.09.08 00:19) [58]

    > antonn ©   (02.09.08 00:13) [57]
    > у меня #\b(\w{4,})#is выбирает слова от 4х символов, все
    > работает...

    а у меня не работает
    работает более менее вот так

    $count = preg_match_all("/[\x80-\xFFa-z0-9_]{4,}/i", $contents, $out, PREG_PATTERN_ORDER);


    с английскими словами нормально, отбираются 4-хсимольные и длинее, а русские все подряд отбмраются и короче 4-х символов. Что за фигня?
  • xayam © (02.09.08 00:20) [59]
    еще вопрос, в php есть функция для удаления повторяющихся элементов из массива?
  • xayam © (02.09.08 00:25) [60]

    > xayam ©   (02.09.08 00:19) [58]
    >  Что за фигня?

    о я допер вот так идеально)) подогнал))

    $count = preg_match_all("/(([\x80-\xFF]{8,})|([a-z0-9_]{4,}))/i", $contents, $out, PREG_PATTERN_ORDER);


    отбирает все слова длинее 3-х букв русских и английских!
  • antonn © (02.09.08 00:32) [61]
    а /s не нужно, у тебя однострочный текст? :)

    постом выше - array_unique()
  • xayam © (02.09.08 00:35) [62]
    спасибо, люблю за это php - в первую очередь думают о программисте :)
  • antonn © (02.09.08 01:30) [63]
    я когда только начал изучть его и смотрел на подобное
    "/([-+]?\\b(?:[0-9]*\\.)?[0-9]+\\b)/s"

    мне хотелось их все убить :)
  • xayam © (03.09.08 13:41) [64]
    короче сделал я индексатор всех веток форума, прогнал по всем веткам, ужас база со всеми индексами занимает 1.5 ГБ. Как такой объем загрузить на хостинг? На хостинге phpmyadmin стоит, но он там максимум 2 Мб в зипе может загрузить. Что можно сделать, чтобы обойти эту проблему?
  • Anatoly Podgoretsky © (03.09.08 13:44) [65]
    > xayam  (03.09.2008 13:41:04)  [64]

    1000 файлов и проблема решена.
  • xayam © (03.09.08 13:51) [66]
    дык это что вручную делать 1000 файлов и вручную загружать, я ж умру?))
  • brother © (03.09.08 13:53) [67]
    почему вручную??? рар режет на тома, фтп клиент льет на фтп...
  • xayam © (03.09.08 13:59) [68]

    > brother ©   (03.09.08 13:53) [67]
    > почему вручную??? рар режет на тома, фтп клиент льет на
    > фтп...

    это как? у меня же нет доступа к папке mysql/data по ftp. и даже если б был, как разархивировать архив на бесплатном хостинге?
  • Anatoly Podgoretsky © (03.09.08 15:16) [69]
    > xayam  (03.09.2008 13:59:08)  [68]

    И чего тебе дают базу на 1.5 гб на бесплатном хостинге?
  • xayam © (03.09.08 15:24) [70]

    > Anatoly Podgoretsky ©   (03.09.08 15:16) [69]
    > > xayam  (03.09.2008 13:59:08)  [68]
    > И чего тебе дают базу на 1.5 гб на бесплатном хостинге?

    угу, 15ГБ дают под все файлы и базы
  • antonn © (03.09.08 15:44) [71]
    тока тормозить оно наверное будет неслабо :)

    а чего так много? там html в базе чтоли?
  • xayam © (03.09.08 16:00) [72]

    > antonn ©   (03.09.08 15:44) [71]
    > тока тормозить оно наверное будет неслабо :)
    > а чего так много? там html в базе чтоли?

    не html нету, только слова для поиска
  • xayam © (03.09.08 16:24) [73]

    > antonn ©   (03.09.08 15:44) [71]
    > тока тормозить оно наверное будет неслабо :)

    смотря как вводить запрос, если вводить
    +пример +запроса

    то находит достаточно быстро, а если
    +прим* +запро*

    , то может повеситься на достаточно долгое время (я не дождался ответа 10 минут если не больше - это на локалхосте). Так что если точно знаешь какие есть слова, хотя бы два-три слова, то вполне реально ветку найти
  • xayam © (03.09.08 18:05) [74]
    А скриптом BigDump http://www.ozerov.de/bigdump.php кто-нибудь пользовался? Поможет в моем случае?
  • antonn © (03.09.08 20:57) [75]
    я иногда юзаю "Sypex Dumper Lite", посмотри, может подойдет.
  • xayam © (03.09.08 21:10) [76]
    там на бесплатном хостинге еще ограничение на размер файла 2МБ. Sypex может сделать дамп в несколько файлов определенного размера? А потом заливать по списку? На http://sypex.net/ написано "многотомные бекапы" . Это то самое?
  • xayam © (04.09.08 11:24) [77]
    Администрации сайта: у меня проблема с загрузкой некоторых Ваших xml-файлов в php. Пишу такой код

    $dom = new domDocument();
    $dom->load($file); //здесь выскакивает warning


    вот список всех warning'ов, которые выскакивают - http://xayam.by.ru/Download/warnings.html
    Это может быть связано с тем, что Вы неправильно формируете xml-файлы?
  • xayam © (04.09.08 19:19) [78]

    > antonn ©   (03.09.08 20:57) [75]
    > я иногда юзаю "Sypex Dumper Lite", посмотри, может подойдет.

    да по ходу подойдет, только я его переправил наполовину, сделал Backup в несколько файлов (по количеству строк, хотя конечно идеально по размеру файла, но что-то там не получается с ограничением запроса по limit), осталось переписать Restore из этих файлов (будет отбирать все файлы в текущей директории по регулярному выражению).
  • xayam © (06.09.08 23:54) [79]
    уф переправил весь скрипт (грамотно sypex написан кстати), как закачаю отпишусь, можно будет искать по сообщения в ветке тоже
  • McSimm © (07.09.08 01:06) [80]

    > Это может быть связано с тем, что Вы неправильно формируете
    > xml-файлы?


    Да. Некоторые файлы xml действительно получались некорректными.

    > PCDATA invalid Char value 3
    Вот это не понятно. Откуда такие симолы там - просто загадка.

    Может вы с кодировками напортачили ? Перекодировали в utf-8, например, а парсить пытаетесь в однобайтной ?
  • Anatoly Podgoretsky © (07.09.08 01:19) [81]
    > McSimm  (07.09.2008 1:06:20)  [80]

    В utf-8 нет таких кодов, это в Юникод есть, а utf-8 как раз и был придумал, что бы все символы были "печатными", с кодами не ниже #32, и не выше DF вроде бы
  • McSimm © (07.09.08 02:34) [82]
    упс, да, имел в виду unicode
  • xayam © (07.09.08 09:55) [83]
    нет, не перекодировал, когда вызывал метод load файл был в кодировке 1251
  • xayam © (07.09.08 14:12) [84]
    еще подскажите, какие кто использует инструменты для uml-моделирования приложения и какие для генерации исходного кода php-проекта по uml-диаграммам? Что лучше использовать? Есть ли в Zend Studio for Eclipse 6.0.1 такие средства, или их нужно доставлять?
  • xayam © (08.09.08 03:12) [85]

    > KilkennyCat ©   (30.08.08 13:17) [17]
    > "взлетит" - найдена всего одна ветка!?

    теперь 123 нашел ветки.

    Еще сделал такую фишку, что если при просмотре ветки встречается ссылка на старую ветку (соответственно со старого места она уже удалена), то заменяю на свою ссылку для просмотра, так что если ветка есть в базе ее можно будет посмотреть!
  • xayam © (08.09.08 14:22) [86]
    все закачал, теперь ищет по сообщениям тоже. Если есть какие баги - пишите сюда.
  • KilkennyCat © (08.09.08 14:31) [87]

    > xayam ©   (08.09.08 03:12) [85]

    отлично.
    к концу недели разгребусь с хостингом. 2 гига хватит?
  • xayam © (08.09.08 14:53) [88]
    Кому интересен переправленный скрипт sypex, то можно скачать здесь http://xayam.by.ru/sdm/sdm.zip в файле config.php нужно указать имя базы данных, кодировку при backup'е и кодировку при restore'е.

    > KilkennyCat ©   (08.09.08 14:31) [87]
    > отлично.
    > к концу недели разгребусь с хостингом. 2 гига хватит?

    мало, под базу нужно 1.3 Гб, под файлы где-то 1.3 ГБ . Итого примерно 3Гб минимум, еще если на расширение то тоже считай
  • KilkennyCat © (08.09.08 16:37) [89]
    гм... ну, чуть менее 5-ти гигов? больше тариф дороговат.
  • xayam © (08.09.08 16:57) [90]

    > KilkennyCat ©   (08.09.08 16:37) [89]
    > гм... ну, чуть менее 5-ти гигов? больше тариф дороговат.

    смотри сам. Может нафиг тогда? Пусть с рекламой будет поисковик, главное чтобы искал, и скорость поиска на бесплатном хостинге вроде пока приличная.
    Только решай сразу, а то McSimm обещал ссылку поставить, нужно решить какую ставить будем, твою или мою.
  • xayam © (08.09.08 17:05) [91]
    замечен еще один баг, при просмотре больших веток - показывает не всю ветку, тоже ограничение хостинга видимо на память, будем пытаться исправлять ((
  • KilkennyCat © (08.09.08 17:28) [92]
    Ну его тогда, бесплатный.
    К пятнице сменю тарифный план, 5 гигов отдам.
  • xayam © (08.09.08 17:36) [93]

    > xayam ©   (08.09.08 17:05) [91]
    > замечен еще один баг, при просмотре больших веток - показывает
    > не всю ветку, тоже ограничение хостинга видимо на память,
    >  будем пытаться исправлять
    > KilkennyCat ©   (08.09.08 17:28) [92]
    > Ну его тогда, бесплатный.
    > К пятнице сменю тарифный план, 5 гигов отдам.

    в принципе эта проблема с памятью принципиально должна быть разрешима, если переправить скрипт view.php на постраничное отображение и считывание из большого файла небольшими частям, примерно как реализованы в sypex'е функции fn_read_str и fn_read.
    Хотя я конечно не против 5 гигов, если не жалко денег :)
  • KilkennyCat © (08.09.08 19:00) [94]

    > xayam ©   (08.09.08 17:36) [93]

    да там деньги не столь большие, 470р. в месяц, а я крайне заинтересован, ибо в ближайшее время ждет меня кодинг частый, так что такая база далеко не бесполезна...
    Так что, преследую свою выгоду ;)
  • xayam © (08.09.08 19:09) [95]

    > KilkennyCat ©   (08.09.08 19:00) [94]

    а что за проект, если не секрет, на delphi?
  • KilkennyCat © (08.09.08 19:31) [96]

    > xayam ©   (08.09.08 19:09) [95]

    да какой там секрет...
    кучка программ для забивания каких-либо данных в какие-либо формы, а также кучка справочников. От юрфирмы заказ.
    Плюс несколько программулек для разработки электронных игрушек. Америкосы заказали.
    На Делфи, ибо на C# мне лениво, С++ только читать могу, 1С ненавижу, Аналитик умер, Фокал тормозной, Фортран плохо живет с 3D-графикой, для Алгола вряд ли найду компоненты, Бейсика не знаю...
  • xayam © (08.09.08 20:42) [97]

    > KilkennyCat ©   (08.09.08 19:31) [96]
    >  Америкосы заказали.

    им там какой поисковик не нужен по каким либо структурированным данным (типа xml) ? А то я теперь в этом поднаторел :) Дорого не возьму :)
  • KilkennyCat © (09.09.08 11:04) [98]

    > xayam ©   (08.09.08 20:42) [97]

    им нужны электронные игрушки
  • clickmaker © (09.09.08 11:10) [99]
    > им нужны электронные игрушки

    трансформеры?
  • KilkennyCat © (09.09.08 11:30) [100]
    Десептиконы :)
  • xayam © (09.09.08 23:10) [101]

    > McSimm

    а максимальная длина сообщения на форуме сколько байт?
  • xayam © (09.09.08 23:56) [102]
    еще вопрос, кто знает php.
    filesize($file)

    может возвращать разные значения на платформах Win и Unix? Если да, то чем отличаются эти значения?
  • xayam © (09.09.08 23:58) [103]
    для одного и того же файла имеется ввиду
  • KilkennyCat © (10.09.08 00:00) [104]
    я не знаю, но предполагаю, что одинаковое. если это размер файла, а не размер занимаемого места...
  • xayam © (10.09.08 00:09) [105]
    сделал постраничное представление можешь посмотреть, но почему-то показывает на той же самой ветке что и на локалхосте не все страницы, их должно быть больше 102, а тут всего 13, хотя на локалке все нормально http://xayam.900megs.com/view.php?folder=48&file=3-1200944466
  • xayam © (10.09.08 00:16) [106]
    а я кажись понял эта ветка занимала на локалхосте 3.16 Мб, а т.к. у них ограничение на файл 2Мб, то они его обрезали, теперь выдает только первые 2Мб инфы остальное потерли (( правда эта ветка скорей исключение там больше 3000 постов :)
  • KilkennyCat © (10.09.08 00:17) [107]

    > xayam ©   (10.09.08 00:16) [106]

    ну вот видишь... так что нафиг бесплатный с ограничениями...
  • xayam © (10.09.08 00:22) [108]

    > KilkennyCat ©   (10.09.08 00:17) [107]
    > > xayam ©   (10.09.08 00:16) [106]
    > ну вот видишь... так что нафиг бесплатный с ограничениями.
    > ..

    да я почти все ограничения обошел, только вот это на файл не получиться видимо, если только все в базе хранить, но это такие тормоза будет наверно
  • antonn © (10.09.08 01:20) [109]

    > а я кажись понял эта ветка занимала на локалхосте 3.16 Мб,
    >  а т.к. у них ограничение на файл 2Мб, то они его обрезали,
    >  теперь выдает только первые 2Мб инфы остальное потерли
    > (( правда эта ветка скорей исключение там больше 3000 постов
    > :)

    все таки не пойму, как ты в базе хранишь все это, почему такое огромное? в базе чистый html?
  • xayam © (10.09.08 21:55) [110]
    ветка храниться в html-файлах, в базе храняться только уникальные слова соответствующие определенной ветке и индексы, видимо индексы и занимают столько в базе
  • xayam © (11.09.08 12:46) [111]
    кто-нибудь знает как на uml-диаграммах обозначаются внешние ключи, я так понял в виде ассоциации. А какое направление, multiplisity? И другие параметры (из проги Enterprize Architect)? Кстати кто не пользуется, прога нормальный DDL( и PHP)-код вроде генерит.
  • xayam © (11.09.08 12:54) [112]
    только что-то внешние ключи вот не настроил, не генерит почему-то
  • xayam © (11.09.08 12:57) [113]
    о йес я разобрался, крутая прога :)
  • xayam © (11.09.08 15:48) [114]
    сделал еще сортировку по вопросу, количеству ответов, названию форумов, нику, дате. По дате пока неправильно работает, поскольку она храниться в виде строки, видимо это не исправлю
  • KilkennyCat © (11.09.08 17:07) [115]
    ну, что, готов в субботу повозиться? завтра к вечеру я уже должен буду получить место.
  • xayam © (11.09.08 17:24) [116]
    в субботу, воскресенье я работаю только если вечером, ночью или в понедельник, вторник, на аську пиши
  • KilkennyCat © (12.09.08 15:53) [117]
    отправил данные.
  • xayam © (12.09.08 16:24) [118]
    а я ничего не получил. Ты куда отослал? На ящике и аське ничего нет. У тебя какая аська, а то может я кого не того заблокировал? Если как в анкете то ничего не приходило
  • KilkennyCat © (12.09.08 16:45) [119]
    Сейчас глянь, у нас тут сервак упал.
  • xayam © (12.09.08 17:19) [120]
    а с кодировкой utf-8 не работает сервер? все в 1251 выдает
  • KilkennyCat © (12.09.08 17:24) [121]
    может, это в апаче надо настроить?
  • xayam © (12.09.08 17:27) [122]
    в firefox'е кодировку приходится на каждой странице менять на utf чтобы что-нибудь увидеть, в ie достаточно включить автовыбор
  • xayam © (12.09.08 17:30) [123]
    вот это скорей всего
    Apache Environment
    Variable Value
    CHARSET  windows-1251
    CHARSET_DETERMINED_BY  AcceptCharset
    HTTP_ACCEPT_CHARSET  windows-1251,utf-8;q=0.7,*;q=0.7
    SOURCE_CHARSET  windows-1251

  • KilkennyCat © (12.09.08 17:31) [124]
    наверное. я последний раз апач лет 8 назад дергал. где-то это в .htaccess поменять надо.
  • KilkennyCat © (12.09.08 17:34) [125]
    Внести в файл .htaccess, который находится в корневом каталоге сайта, следующую строку:

               CharsetSourceEnc KOI8-r
  • xayam © (12.09.08 17:36) [126]
  • KilkennyCat © (12.09.08 17:37) [127]
    а в другом источнике сказано
    AddType "text/html; charset=koi8-r" .html .htm .shtml

    вообщем, возможность есть, надо тока понять, как :)
  • xayam © (12.09.08 17:40) [128]
    CharsetDisable On

    помогло
  • xayam © (12.09.08 17:43) [129]
    еще прикольно ftp-сервер не допускает более одного соединения для закачки, на бесплатном и то два можно :)
  • KilkennyCat © (12.09.08 17:44) [130]
    Возможно. а зачем два?
  • xayam © (12.09.08 17:49) [131]
    быстрее гораздо
  • KilkennyCat © (12.09.08 17:51) [132]
    бесплатному пофиг если во время такой закачки остальной канал становится тоньше.
  • xayam © (12.09.08 17:56) [133]
    сделал все таки сортировку по дате тоже, пришлось переиндексировать всю таблицу, как закачаю должно работать это тоже
  • KilkennyCat © (12.09.08 18:11) [134]
    отлично.
    Возись :)

    а эти все переиндексации-перекодировки на сервере не проще делать? если не превышать допустимый загруз процессора.
  • xayam © (12.09.08 18:24) [135]
    нет вряд ли, мой комп основательно тормозит, а там вообще наверно, тем более все равно базу заново закачивать быстрее так будет
  • xayam © (14.09.08 22:01) [136]

    > KilkennyCat ©   (12.09.08 18:11) [134]

    че то мои SATA-диски не распознает система, кроме системного, а там все данные были. Так что завтра пойду в ремонт наверно, сам не могу разобраться. Bios ни одного SATA диска не видит, хорошо что система на ATA висит :)  В чем может быть дело? Пару раз питание в доме отрубало, скачки напряжения были может поэтому. Поэтому наверно наше дело затянется, не на много надеюсь.
  • KilkennyCat © (15.09.08 01:37) [137]
    нда... у мня такое тоже бывало. полное отключение и перепроверка всех настроек обычно помогала. но на крайний случай у нас есть переходник usb-sata-ide, мы им диски смотрим.
  • xayam © (15.09.08 13:46) [138]
    прикольно несколько раз перегрузился - Bios увидела оба диска, но винда смогла подключить только один, второй пишет - corrupt file table, хорошо что на нем особо данных не было кроме фильмов, пришлось форматнуть, но все равно не может подключить. Таблица MFT при форматировании создается заново? Или в чем может быть проблема?
    P.S. Теперь боюсь перегружать комп :)
  • KilkennyCat © (15.09.08 14:40) [139]
    Скорее всего, придется полностью сносить разделы.
    Но на самом деле, попробуй восстановить из копии таблицы.
    Я вообще пользуюсь утилитой http://www.cgsecurity.org/testdisk-6.9.win.zip
    восстановил довольно-таки много винчестеров
  • xayam © (20.09.08 01:25) [140]

    > McSimm ©

    Все можете ставить ссылку http://xayam.kilkennycat.ru/?s=query  если еще не забыли, вместо
    query

     соответственно строка запроса.

    > antonn ©

    Еще не знаете как в php выполнить определенный php-файл и получить результат вывода в виде строки?
  • antonn © (20.09.08 08:59) [141]
    проинклудить :)
  • xayam © (20.09.08 13:53) [142]
    нет, Вы наверно меня неправильно поняли, я имел ввиду чтобы вывод (echo, print и т.д.) php-файла можно было присвоить какой-нибудь переменной и использовать далее эту переменную как строку, с include не получается так.
  • Eraser © (20.09.08 14:26) [143]
    > [142] xayam ©   (20.09.08 13:53)

    ob_start();
    ob_get_contents();
    ob_end_clean();

  • xayam © (20.09.08 15:24) [144]

    > Eraser ©   (20.09.08 14:26) [143]
    >
    > > [142] xayam ©   (20.09.08 13:53)
    >
    > ob_start();
    > ob_get_contents();
    > ob_end_clean();
    >

    к сожалению это работает только если php-файл я могу править и пишу эти функции в самом php-файле, а если файл удаленный и нет доступа к исходникам, то это не работает
  • Eraser © (20.09.08 22:33) [145]
    > [144] xayam ©   (20.09.08 15:24)

    определись, что конкретно требуется.
    речь идет о файле или о контенте, который возвращает какой-то сторонний веб-сервер?
    т.е. я так понял нужно локально выполнить скрипт, который находится на удаленном сервере?
  • xayam © (20.09.08 23:52) [146]

    > Eraser ©   (20.09.08 22:33) [145]

    скажем имеем код:

    <?php
            $s = unknownfunction("http://www.domain.com/path/output.php");
            ... //обработка ответа
            echo $s;
    ?>


    должно вывести все что выводит файл http://www.domain.com/path/output.php , неизвестно мне лишь есть ли такая функция unknownfunction(). Только мне нужно обязательно строка, а не выводить сразу в браузер, потому что может понадобиться еще обработать эту строку регулярными выражениями например.
  • Eraser © (21.09.08 00:30) [147]
    > [146] xayam ©   (20.09.08 23:52)

    file_get_contents
    прежде чем писать свой поисковик, не плохо бы научиться пользоваться чужими + добавить в закладки сайт php.net ;-)
  • xayam © (21.09.08 00:50) [148]

    > Eraser ©   (21.09.08 00:30) [147]
    > file_get_contents

    мда заработало, только до этого не работало
    писал вот так

    test
    <?php
    $out = "<p>Привет мир</p>";
    echo $out;
    ?>
    123456

    не работает - выводит пустую страницу
    пишу так

    <?php
    $out = "<p>Привет мир</p>";
    echo $out;
    ?>
    123456

    работает, почему в первом случае не выводится слово test тоже, это же как html должно интерпретироваться?
  • xayam © (21.09.08 00:51) [149]
    это я на локалхосте проверял :)
  • antonn © (21.09.08 12:14) [150]
    fgets() или file_get_contents() ? :)
  • xayam © (07.10.08 15:54) [151]
    мда, бесплатный хостинг удалили, даже без объяснений; платный что-то не работает, наверно KilkennyCat не оплатил; ссылку не поставили. Короче жизнь не удалась :)
  • oldman © (07.10.08 16:54) [152]

    > xayam ©   (07.10.08 15:54) [151]
    > мда, бесплатный хостинг удалили ...наверно KilkennyCat не оплатил;

    > Короче жизнь не удалась :)


    вы не халявщик, вы партнер?
  • xayam © (07.10.08 16:59) [153]
    я халявный партнер )) или в этом случае просто кодер, раз скрипты написал, не знаю хорошо или плохо, но работает вроде.
  • xayam © (09.10.08 18:33) [154]
    McSimm куда пропал?
  • Kerk © (10.10.08 02:30) [155]
    Почитал старые ветки... ностальгия.

    http://xayam.kilkennycat.ru/view.php?folder=40&file=3-1135852155
    А ведь у меня до сих пор та самая клава. Сам комп, правда, две недели назад сдох, а ноуту она не пригодилась.
  • xayam © (10.10.08 15:30) [156]
    мда, у  меня тоже было, такое интересное чувство, как будто что-то ушло безвозвратно :)
  • Kerk © (10.10.08 22:09) [157]
    Особенно жалко удаленные посты... сейчас уже не вспомнишь чего ж там было :)
  • xayam © (10.10.08 22:33) [158]

    > Kerk ©   (10.10.08 22:09) [157]

    :) а мне еще жалко, закрытых веток, столько незаконченных мыслей, а меня тут особо сильно трут :)
  • Kerk © (10.10.08 22:38) [159]
    Меня тут регулярно репрессируют. Здешняя власть немыслима без насилия.
  • xayam © (12.10.08 19:04) [160]
    Вообще интересно почему всякое изменение скрипта форума всегда наталкивается на стену, помню как-то еще предлагал сделать возможность ссылаться на какой-то выделенный пост типа <a href="...#xxx">[xxx]</a>, когда ветка большая было бы удобно , еще некоторые много чего предлагали, может я не все конечно даже прочитал. Надо же как-то развиваться, хотя бы пытаться, а не на месте топтаться. Имхо. Или я не прав?
  • имя (02.12.08 19:50) [161]
    Удалено модератором
    Примечание: spam
  • имя (17.12.08 14:50) [162]
    Удалено модератором
 
Конференция "Прочее" » Помогите исправить багу в скрипте поисковика
Есть новые Нет новых   [134449   +5][b:0.001][p:0.009]