![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| box |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 27.2.2007 Репутация: нет Всего: 0 |
надо писать только уникальные ип , тобиш если в базе уже есть такой ип то игнорировать добавление в базу. делаю так :
но на деле скрипт пишит в базу все подряд что проверено пхпшной функцией array_unique(); где баг, у меня в коде или в самой функции перла ? |
|||
|
||||
| Jimy |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 4.7.2010 Репутация: нет Всего: 3 |
разумеется в коде.
распечатайте хэш %auto_white_list после его заполнения в строке 7 и в строке 12 выведите значение $ip. думаю после этого сразу увидите где ошибка |
|||
|
||||
| box |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 27.2.2007 Репутация: нет Всего: 0 |
все перепроверил 100 раз , в начале хеш заполняется и значение $ip присутствует .
походу баг функции ! кто нибудь знает альтернативный способ , рабочий ? Это сообщение отредактировал(а) box - 26.12.2010, 21:41 |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
покажите данные
|
|||
|
||||
| box |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 27.2.2007 Репутация: нет Всего: 0 |
какие данные надо ?
в $auto_white_list заносятся ип (что проверялось) в переменной $ip находится ип который надо найти в $auto_white_list и если ип не найден то пишим в базу проще не придумаеш , но не работает! тобиш функция вообще пропускает все ип не зависимо есть он в $auto_white_list или нет в чем же дело ? а если пишу так :
то вообще не пускает ни один ип Это сообщение отредактировал(а) box - 26.12.2010, 23:35 |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
у меня работает:
# perl -le '$auto_white_list{$ARGV[0]} = 1; print exists $auto_white_list{$ARGV[1]} ? "YES" : "NO"' 127.0.0.1 127.0.0.1 YES # |
|||
|
||||
| box |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 27.2.2007 Репутация: нет Всего: 0 |
ясно , чувствую что придется насиловать мускул WHERE ip!='".$ip."'
но это же бред ! вечные проблемы с этим перлом ! |
|||
|
||||
| vadiml |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 27.7.2007 Репутация: 5 Всего: 7 |
box,
Это Вы его ещё готовить не умеете PS Каждую их 3х частей Вашего кода можно написать оптимальнее, например это $auto_white_list{$idk}=$idk; работает медленнее чем $auto_white_list{$idk}=1; а Вам оно нужно только как флаг, Заполненный %auto_white_list можно было получить сразу из запроса без дополнительного foreach my $idk (keys %$resu) {} переменный $host и $string как я понимаю Вам не нужны, а создание их на каждой итерации только впустую гоняет память, вместо них можно написать undef, и т.д. |
|||
|
||||
| box |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 27.2.2007 Репутация: нет Всего: 0 |
оптимизация это уже другой вопрос , хотя я пробовал так как вы говорите , результат 0
|
|||
|
||||
| box |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 27.2.2007 Репутация: нет Всего: 0 |
вопрос практически решен , оказывается надо каждый перечитывать хеш $auto_white_list , короче говоря так работает :
вопрос к vadiml : как можно получить %auto_white_list сразу из запроса без дополнительного foreach my $idk (keys %$resu) {} |
|||
|
||||
| Jimy |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 4.7.2010 Репутация: нет Всего: 3 |
хардкор |
|||
|
||||
| vadiml |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 27.7.2007 Репутация: 5 Всего: 7 |
box,
Делаете SELECT в котором возращается 2 поля, первое из которых IP, второе -- любое положительное значение, далее см. примеры на http://search.cpan.org/~timb/DBI-1.615/DBI.pm |
|||
|
||||
| DEER |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 749 Регистрация: 12.4.2005 Где: г. Рязань Репутация: 1 Всего: 13 |
В своем первом примере объявите %auto_white_list ДО началала заполнения
-------------------- |
|||
|
||||
| box |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 27.2.2007 Репутация: нет Всего: 0 |
сделал красивее :
но тут возникает вопрос , дабы оптимизировать код как поместить запрос в плейсхолдер вернеее как избежать prepare при каждой итерации цикла ? Это сообщение отредактировал(а) box - 27.12.2010, 13:29 |
|||
|
||||
| DEER |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 749 Регистрация: 12.4.2005 Где: г. Рязань Репутация: 1 Всего: 13 |
я вам только указал на то, почему не срабатывало условие
если бы стояло
То ваш скрипт бы не выполнился. Каждый раз в цикле, для каждого ip не надо вызывать
Это повесит БД когда нибудь.
Это сообщение отредактировал(а) DEER - 27.12.2010, 13:32 -------------------- |
||||||||
|
|||||||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |