Поисковые роботы

RomM1

Пользователь
Можно сделать так, в viewonline.php
PHP:
if(!$bot_active = CACHE('bb_cache')->get('active_bots'))
{
    $bot_active = DB()->fetch_rowset("SELECT bot_name, bb_visit FROM ".BB_BOTS." WHERE bb_visit > ".(time()-300));
    CACHE('bb_cache')->set('active_bots', $bot_active, 300);
}
меняем на
PHP:
$bot_active = DB()->fetch_rowset("SELECT bot_name, bb_visit FROM ".BB_BOTS." WHERE bb_visit > ".(time()-300));
Ооочень умное решение убрать кешерирование...
 

[email protected].

Пользователь
Ооочень умное решение убрать кешерирование...
А зачем оно вообще там нужно, это же не главная страница, а обращение к списку пользователей бывает очень редко, так что смысла брать этих ботов из кэша я не вижу.
 

KaTana

Пользователь
KaTana, не работает. Notice: Undefined index: bb_visit in /var/www/data/www/viewonline.php on line 182
'bb_visit' => bb_date($row['bb_visit']),

и как у тебя эта строка 182 то оказалась? См. код нормально. Несколько дней - полет нормальный, логи чисты (а раньше были нотисы), боты гуляют, кэш обновляется.

Снеси мод целиком, установи мой вариант
 

Вложения

  • [FULL] Детект поисковых ботов - bay Torrentpier II.txt
    9.9 KB · Просмотры: 48

qaqra

Пользователь
поставил то же самое -

Notice: Undefined index: bb_visit in /var/www/qaqra/data/www/viewonline.php on line 182

вот сама строчка -

PHP:
'bb_visit' => bb_date($row['bb_visit']),
 
G

Gemini_13

Гость
KaTana, работает отлично. Для полного счастья можно докинуть еще в админку :)

/admin/index.php
Найти:
PHP:
                    "IP_ADDRESS" => $guest_ip,
                    "U_WHOIS_IP" => $bb_cfg['whois_info'] . $guest_ip,
                ));
            }
        }
Вставить после:
PHP:
        // Детект поисковых ботов
        $bot_active = DB()->fetch_rowset("SELECT bot_name, bb_visit FROM ".BB_BOTS." WHERE bb_visit > ".( TIMENOW - 300 ));
        $count = count($bot_active);
        if($count>0)
        {
            foreach ($bot_active AS $key=>$row)
            {
                $template->assign_block_vars('bots', array(
                'bb_visit' => bb_date($row['bb_visit']),
                'bot_name'  => $row['bot_name'],
                ));
            }
        }

/templates/admin/index.tpl
Найти:
HTML:
<!-- END guest_user_row -->
Вставить после:
HTML:
    <!-- BEGIN bots -->
    <tr class="row2">
        <td style="color:gray;">{bots.bot_name}</td>
        <td class="tCenter">{bots.bb_visit}</td>
        <td class="tCenter" style="color:red;">I'm a bot, I have no IP</td>
    </tr>
    <!-- END bots -->

Ну и почистить кеш обязательно
 

KaTana

Пользователь
Рано было бить в бубен: на третий день нотис выскочил снова.
Зато теперь мод переделан капитально, нотисов не может быть по определению ;)
Конечный вариант:
 

Вложения

  • [FULL] Жучим поискоботов - bay Torrentpier II.txt
    12.8 KB · Просмотры: 72
G

Gemini_13

Гость
KaTana, чесно говоря я сразу снес кеширование)

сегодня увидел такие нотисы:
Код:
PHP Notice:  Undefined index: HTTP_USER_AGENT in /home/***/www/includes/page_header.php on line 41

Особо не заморачиваясь сделал так:
PHP:
/**
* START Детект поисковых ботов
* Проверка через юзерагент на бота
*/
if($bb_cfg['search_bots'])
{
    $template->assign_var('ENABLE_SEARCH_BOTS', true);
    $bots = array();
    if(!$bots = CACHE('bb_cache')->get('bots'))
    {
        $bots = DB()->fetch_rowset("SELECT * FROM " . BB_BOTS);
        CACHE('bb_cache')->set('bots', $bots, 86400);
    }
    foreach ($bots AS $bot)
    {
        if (isset($_SERVER['HTTP_USER_AGENT']))
        {
            if(strstr($_SERVER['HTTP_USER_AGENT'], $bot['bot_agent']) <> FALSE)
            {
                DB()->sql_query("UPDATE ".BB_BOTS." SET bb_visit=".TIMENOW." WHERE bot_id={$bot['bot_id']}");
                break;
            }
        }
    }
}
/**
* END Детект поисковых ботов
*/

Покачто тестирую, но по идее должно больше не беспокоить.
 
Сверху