Web‑серверы и прикладные web‑сервисы: Nginx, Apache, HAProxy, панели управления и скрипты для администрирования.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
mlevel
- мл. сержант
- Сообщения: 105
- Зарегистрирован: 2009-09-28 15:31:39
Непрочитанное сообщение
mlevel » 2010-12-24 22:57:03
Скрипт должен сгенерировать 10 случайных чисел - идентификаторов, которые не начинаются на 0 и отсутсвуют в БД.
Но почему то проходит только 1 итерация, и скрипт не завершаеться, а дальше висит в процесах. В чем может быть причина? Спасибо.
Код: Выделить всё
use DBI;
use strict;
use warnings;
use diagnostics;
sub GenTrid {
my $i = 1;
my ($pid, $buf, $uidd, $set);
while($i <= 10) {
$buf = `cat /dev/urandom | tr -cd "[:digit:]" | head -c10`;
$set = &Test($buf);
if((substr($buf,0,1) ne 0) && !$set) {
print $i.' '.$buf."\n";
$i++;
}
else {
print "false\n";
}
}
}
sub Test {
my $buf = $_[0];
my $st;
my $Query = "SELECT `id` FROM `test` WHERE `ptrid` = '$buf' LIMIT 1";
my $dsn = "DBI:mysql:database=test;host=295.260.204.3;port=3306";
my $dbh = DBI->connect($dsn, 'tarifer', '562346') || die(DBI->errstr);
my $sth = $dbh->prepare($Query);
$sth->execute();
my @res = $sth->fetchrow_array();
(!$res[0])?($st = 0):($st = 1);
return $st;
}
&GenTrid();
mlevel
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
-
Контактная информация:
Непрочитанное сообщение
ProFTP » 2010-12-26 22:41:58
нужно анализировать каждую строку и смотреть отладку, смотреть то что в переменныех и как оно сравнивает...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'


ProFTP
-
mlevel
- мл. сержант
- Сообщения: 105
- Зарегистрирован: 2009-09-28 15:31:39
Непрочитанное сообщение
mlevel » 2010-12-27 1:09:44
Если:
Код: Выделить всё
$buf = `cat /dev/urandom | tr -cd "[:digit:]" | head -c10`;
меняю на:
то все работает отлично...

mlevel
-
mlevel
- мл. сержант
- Сообщения: 105
- Зарегистрирован: 2009-09-28 15:31:39
Непрочитанное сообщение
mlevel » 2010-12-28 0:50:51
фигня вообще странная!
поменял:
Код: Выделить всё
$buf = `cat /dev/urandom | tr -cd "[:digit:]" | head -c10`;
на:
Код: Выделить всё
$buf = `/usr/local/bin/apg -a 1 -n 1 -x 10 -m 10 -M n`;
заработало...

mlevel