Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> exists не работает 
:(
    Опции темы
box
Дата 27.12.2010, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 27.2.2007

Репутация: нет
Всего: 0



так как вы предлагаете не пойдет ибо хеш %auto_white_list перечитывается из базы только раз перед началом цикла а значит что в теле цикла if exists будет использовать несколько устаревшую информацию. так как продолжают добавлятся в базу новые записи....
PM MAIL   Вверх
shamber
Дата 27.12.2010, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Если IP в базе, может проще чтобы база проверяла есть он или нет?
PM MAIL Jabber   Вверх
DEER
Дата 27.12.2010, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: 1
Всего: 13



Цитата(box @ 27.12.2010,  13:52)
так как вы предлагаете не пойдет ибо хеш %auto_white_list перечитывается из базы только раз перед началом цикла а значит что в теле цикла if exists будет использовать несколько устаревшую информацию. так как продолжают добавлятся в базу новые записи....

а что мешает вместо
Код

if (!exists($white_list{$ip})) {#и если в $white_list нет такого ип то пишим в базу
   $query_handle2->execute($ip);
}

сделать вот так?
Код

if (!exists($white_list{$ip})) {#и если в $white_list нет такого ип то пишим в базу
   $query_handle2->execute($ip);
   $white_list{$ip} = 1;
}

??


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
box
Дата 27.12.2010, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 27.2.2007

Репутация: нет
Всего: 0



пришлось выкинуть проверку из тела цикла , теперь скрипт при 10к записей в базе работает менее секунды :
Код

foreach my $k (keys %hash) {
.............
if($hash{$k}<10 && $ip!=""){
$tmp{$ip}++;
}
................
}

   my $sql = 'SELECT ip, id FROM auto_white_list';
   my $stk = $connect->prepare($sql);
   $stk->execute();
   my %white_list = map { $_->[0] => $_->[1] } @{ $stk->fetchall_arrayref()};

foreach my $kpz (keys %tmp) {
if (!exists($white_list{$kpz})) {
   $query_handle2->execute($kpz);
}
}

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0445 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.